Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PDFbox出错(如何计算非简单字体的位置)_Java_Apache_Jakarta Ee_Pdf_Pdfbox - Fatal编程技术网

Java PDFbox出错(如何计算非简单字体的位置)

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 代码 ....

我正在使用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
代码

.....

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中是否存在一些实际的错误。我也有同样的问题。你设法解决了吗?