相关疑难解决方法(0)

使用PDFBox将UTF-8编码的字符串写入PDF

我无法使用PDFBox将unicode字符写入PDF.下面是一些生成垃圾字符而不是输出"š"的示例代码.我可以添加什么来获得对UTF-8字符串的支持?

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);

PDType1Font font = PDType1Font.HELVETICA;
contentStream.setFont(font, 12);
contentStream.beginText();
contentStream.moveTextPositionByAmount(100, 400);
contentStream.drawString("š");
contentStream.endText();
contentStream.close();
document.save("test.pdf");
document.close();
Run Code Online (Sandbox Code Playgroud)

java pdf unicode utf-8 pdfbox

12
推荐指数
1
解决办法
2万
查看次数

PdfBox编码符号货币欧元

我用Apache PDFBox库创建了一个PDF文档.我的问题是在页面上绘制字符串时编码欧元货币符号,因为基本字体Helvetica不提供此字符.如何将输出"þÿ¬"转换为符号"€"?

java pdfbox

6
推荐指数
1
解决办法
8375
查看次数

如何使用pdfbox将unicode文本写入pdf?

我尝试使用Apache PDFBox 1.8.6在中创建PDF Java。(请参见下面的代码)

如果我写字符串:Hello! 123 abc äöüß一切正常。
但是,如果我添加一个€符号或等效的\ u20ac,字符串就会搞砸了:
þÿ H e l l o ! 1 2 3 a b c ä ö ü ß ¬ ¬ ¦
我认为这与编码有关,因为像OpenOffice这样的程序可以毫无问题地导出带有€或其他Unicode符号的pdf。

那么,我该怎么做才能将Unicode字符串写入PDF?

try {
        PDDocument doc = new PDDocument();
        PDPage page = new PDPage();
        doc.addPage(page);
        PDPageContentStream stream = new PDPageContentStream(doc, page);
        PDFont font = PDType1Font.COURIER;
        //font.setFontEncoding(new EncodingManager().getEncoding(COSName.WIN_ANSI_ENCODING));
        stream.setFont(font, 14);
        stream.beginText();
        stream.setNonStrokingColor(Color.BLACK);
        stream.moveTextPositionByAmount(20, 750);
        String text = "Hello! 123 abc äöüß € \u20ac";
        //JOptionPane.showMessageDialog(null, text);
        stream.drawString(text); …
Run Code Online (Sandbox Code Playgroud)

java pdf pdfbox

6
推荐指数
1
解决办法
7591
查看次数

标签 统计

java ×3

pdfbox ×3

pdf ×2

unicode ×1

utf-8 ×1