【发布时间】:2017-08-11 17:00:15
【问题描述】:
我正在使用 pdfbox 2.0.5 使用此代码填写 PDF 文档的表单字段:
doc = PDDocument.load(inputStream);
PDDocumentCatalog catalog = doc.getDocumentCatalog();
PDAcroForm form = catalog.getAcroForm();
for (PDField field : form.getFieldTree()){
field.setValue("должен");
}
我收到此错误:U+0434 ('afii10069') 在此字体中不可用 Times-Roman(通用:TimesNewRomanPSMT)编码:StandardEncoding with Difference
PDF 文档本身包含显示良好的西里尔文字。我尝试过使用不同的字体。对于“Arial Unicode MS”,它想下载一个 50MB 的“Adobe Acrobat Reader DC Font Pack”。这是对西里尔字符的要求吗?
我必须在文本字段中指定哪种字体来处理西里尔文(或亚洲)字符?
谢谢, 罗波
【问题讨论】:
-
当我在 Acrobat Reader 上打开 PDF 时,我可以在输入字段中输入西里尔字符
-
PDFBox 仅使用为表单域指定的字体,而某些 PDF 查看器在指定字体缺少所需字符时使用额外的备用字体。因此,要指定的字体必须包含您可能插入的所有字形。不幸的是,您没有展示您如何创建表单,而只是展示了您如何填写。因此,很难说出如何更好地创建它...
-
感谢您的回复。您是否有说明我应该如何创建 PDF 以使其正常工作。我正在使用 Acrobat Pro。还有其他/更好的编辑器吗?我可以为表单字段选择一种字体,但不知道哪种字体包含西里尔字形。我使用 Arial 作为文本字体,字符在文本中正确显示,但我仍然无法将西里尔字符插入表单字段。任何人都应该可以查看/打印带有填写表单字段的最终 PDF 文件,而无需先安装字体包。
-
我只是在这里尝试使用我的旧 Adobe Acrobat 9.5 创建一个具有适当字体的表单域。不幸的是,该字体仅使用 WinAnsiEncoding 嵌入,其中不包含西里尔字符形。
-
我发现了这个问题:issues.apache.org/jira/browse/PDFBOX-3138 说“该字段使用的嵌入字体确实包含希伯来字形,以及可用于查找这些字形的有效“cmap”表。提到的字体中确实存在U+05D7字符。嵌入的字体文件是OpenType格式,但是PDF字体字典是Type1并指定WinAnsiEncoding,不包括希伯来字符。所以严格来说,该字段不能使用任何非 ANSI 字符填充,因此 PDFBox 的行为是正确的。”
标签: java pdf fonts pdfbox acrobat