1

我尝试PDAcroForm.flatten()在 pdf 中展平表单字段 (),该字段在之前的步骤中从.xfdf文件中填充。预期的结果是仅用文本替换可编辑框。

但是,我在拼合后将文本填充到表单(output02.pdf)中的 PDF 中,所有添加的文本现在都完全消失了,所以我得到一个空格而不是表单值(output03.pdf)。

在 github 上放一个完整的示例,包含 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"));

pdf结果预览 填写的文字也不见了

编辑:通过表单菜单在现有 PDF 上
创建这些表单元素,并将 pdf 保存为和.Adobe Acrobat Pro 10.1.1sample5.pdftest.pdf

4

1 回答 1

2

这是两年前从 2.0.5 开始修复的错误。由于该错误,xfdf 文件中的字段值被分配为名称,而不是字段字典的 /V 条目(用于值)中的字符串。正因为如此,在场的外观流中,并没有什么可显示的。因此,展平后什么都没有。

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

于 2019-03-15T18:31:01.970 回答