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

时间:2014-08-27 10:49:41

标签: java pdf pdfbox

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

如果我写下字符串:Hello! 123 abc äöüß一切正常 但是,如果我添加一个€符号或它等效的\ u20ac,String就会搞砸了:
þÿ 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);
        stream.endText();
        stream.stroke();
        stream.close();
        doc.save("test.pdf");
        doc.close();
    } catch (Exception ex) {
        Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
    }

1 个答案:

答案 0 :(得分:4)

显然,PDFBox不支持Unicode字体。也就是说,直到现在:在this bug被一个好人修复之后,PDFBox 2.0.0的主干完全显示了我的Unicode。