java - 尝试使用 PDFBOX 显示西类牙语或法语字符时出错

标签 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 中)并且不重新键入代码中的有问题的字符,则新编码不会生效。

最佳答案

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

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

关于java - 尝试使用 PDFBOX 显示西类牙语或法语字符时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32351565/

相关文章:

pdfbox - 使用 PDFBOX 根据 PDF 中的输出识别文本

java - 在 portlet 中读取 .json 文件

java - 无法再编译 Vaadin 项目(无法执行 objective-c om.vaadin :vaadin-maven-plugin )

java - 仅当每个循环未找到匹配项时才运行代码?

java - PDFBox - 如何创建目录

pdf - 在 PDFBox 文本提取中保留 "long"空格

java - 如何在 Apache PDFBox 中呈现彩色文本

java - 如何在JLabel中显示计时器

java - com.fasterxml.jackson.core.JsonGenerator 类型无法解析。它是从所需的 .class 文件中间接引用的

java - PDFBox API : How to change font to handle Cyrillic values in an AcroForm field