尝试使用PDFBOX

时间:2015-09-02 11:11:46

标签: java pdfbox

我正在尝试使用PDFBOX-2.0.0-SNAPSHOT创建PDF,但我遇到了问题和错误。 这是典型的Hello World示例,包含西班牙语和法语字符:

    PDDocument document = new PDDocument();
    PDPage page = new PDPage(PDRectangle.A4);
    document.addPage(page);
    PDType1Font font = PDType1Font.HELVETICA;

    PDPageContentStream stream = new PDPageContentStream(document, page);
    String text = "áÁÀà";
    stream.beginText();
    stream.setFont(font, 12);
    stream.newLineAtOffset(100, 700);
    stream.showText(text);
    stream.endText();
    stream.close();
    document.save("sample.pdf");
    document.close();

我收到了这个错误:

sep 02, 2015 12:42:43 PM org.apache.pdfbox.pdmodel.font.PDType1Font <init>
ADVERTENCIA: Using fallback font ArialMT for base font ZapfDingbats
Exception in thread "main" java.lang.IllegalArgumentException: This font type only supports 8-bit code points

如果我加载arialuni.ttf字体,它会编译,但只会在PDF文件中出现问号。

我已经尝试过PDFBOX 1.8但也无法正常工作。

有什么想法吗?

提前致谢。

更新

经过一些测试后,我意识到如果你改变了项目的编码(至少在Intellij IDEA中)并且没有在代码中重新输入有问题的字符,新编码就不会生效。

1 个答案:

答案 0 :(得分:0)

PDType1Font.XXX是PDF查看器本身提供的字体,它不支持unicode。您应该可以使用类似于https://github.com/apache/pdfbox/blob/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/EmbeddedFonts.java

的TTF字体
PDType0Font font = PDType0Font.load(document, new File("path/YourFont.ttf"));