展平表单字段会删除内容

时间:2019-03-15 15:09:13

标签: pdf pdfbox flatten-pdf

我尝试将pdf中的表单字段(PDAcroForm.flatten())展平,然后再将其从.xfdf文件中填充出来。 预期的结果是将可编辑框替换为仅文本。

但是,我从PDF中将文本展平后(output02.pdf)填满后,所有添加的文本现在都完全消失了,所以我得到了一个空格,而不是表单值({{3} }。

放入output03.pdf,其中包含PDF文件(输入和生成的输出),但这只是拼合的一部分:

// in Main.java, function flatten()

PDDocument pdf_document = PDDocument.load(new File("output02.pdf"));  //from step before, merged & filled pdf files.

List<PDField> the_fields = new ArrayList<PDField>();
for (PDField field: pdf_document.getDocumentCatalog().getAcroForm().getFieldTree()) {
    the_fields.add(field);
}
System.out.println("Flattening fields: " + Arrays.stream(the_fields.toArray()).map(field -> ((PDField)field).getFullyQualifiedName()).collect(Collectors.joining(", ","[","]")));
pdf_document.getDocumentCatalog().getAcroForm().flatten(the_fields, true);
pdf_document.save(new File("output03.pdf"));
  

complete example on github    填写的文本也消失了

修改:
通过表单菜单在现有PDF上使用Adobe Acrobat Pro 10.1.1创建这些表单元素,然后将pdf保存为sample5.pdftest.pdf

1 个答案:

答案 0 :(得分:2)

这是自2.0.5 two years ago起修复的错误。由于该错误,xfdf文件中的字段值被分配为名称,而不是字段字典的/ V条目(用于值)中的字符串。因此,该字段的外观流中没有任何要显示的内容。因此,展平后什么也没有。

始终使用最新版本的PDFBox。我在所有项目中都使用maven versions plugin