我正在尝试使用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中)并且没有在代码中重新输入有问题的字符,新编码就不会生效。
答案 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"));