Java PDFbox出错(如何计算非简单字体的位置)
我正在使用pdfbox在我的pdf文件中填写表单,应用程序能够在表单上显示可用字段的数量,但它返回以下错误Java PDFbox出错(如何计算非简单字体的位置),java,apache,jakarta-ee,pdf,pdfbox,Java,Apache,Jakarta Ee,Pdf,Pdfbox,我正在使用pdfbox在我的pdf文件中填写表单,应用程序能够在表单上显示可用字段的数量,但它返回以下错误 Messages: Error: Don't know how to calculate the position for non-simple fonts File: org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java Line number: 616 代码 ....
Messages:
Error: Don't know how to calculate the position for non-simple fonts
File: org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java
Line number: 616
代码
.....
while (fieldsIter.hasNext()) {
PDField field = (PDField) fieldsIter.next();
setField(pdf, field.getPartialName(), "My input");
//setField(pdf, field.getFullyQualifiedName(), "My input");
}
.....
public void setField(PDDocument pdfDocument, String name, String value) throws
IOException {
PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField(name);
if (field != null) {
field.setValue(value);
} else {
System.err.println("No field found with name:" + name);
}
}
如果您需要代码的任何其他部分,请告诉我。如果有效,请使用另一个PDF。这意味着PDFBox与第一个PDF不兼容。我对PDF也有同样的问题,我最终通过编辑PDF表单字段(使用Abobe Acrobat Pro)并设置特定字体来解决 问题是有问题的字段根本没有指定任何字体
希望有帮助 pdfbox中似乎有一个bug,它出现在各种无法找到相关字体的情况下。我能找到的唯一解决方法就是跳过在
PDTextbox.setValue
中运行的更新外观代码。您可以通过执行以下操作“强制”更新值:
COSString fieldValue = new COSString("Awesome field value");
textbox.getDictionary().setItem(COSName.V, fieldValue);
据推测,在除角落外的所有情况下,PDF查看器都可以处理字体渲染,只需为字段设置V
项就足够了。主观上,我生成的文档在Acrobat和OS X预览中可以很好地打开
相关问题:
编辑以添加:默认情况下,acrobat似乎创建了可视文本区域大小为0的字段。对于有此问题的文档,可以通过添加
textbox.getDictionary().setItem(COSName.AP,null)来解决此问题代码>并希望读者能够正确处理呈现外观的问题。我也有这个问题,问题是PDF没有嵌入使用的字体
此外,AcrobatPro的飞行前工具似乎无法修复PDF。我最终重新创建了PDF,现在它运行良好。我使用AdobePro将PDF合并为一个。在此之后,生成的PDF无法与PDFBox一起使用,原始PDF也可以工作。经过一点研究,我发现合并过程会破坏字体信息。只需重新设置字体,它应该会工作
致以最良好的祝愿 请同时提供有问题的PDF(或任何可以复制该问题的PDF样本)。本质上,所讨论的PDAppearance
代码只有在其PDFont
实际上是PDSimpleFont时才知道该做什么。
但当前PDSimpleFont
是抽象PDFont的唯一直接子类。
因此,font参数似乎为空。您的PDF现在将显示PDF是否没有给出字体,或者给出的字体是否损坏,或者PDFBox中是否存在一些实际的错误。我也有同样的问题。你设法解决了吗?