我尝试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 保存为和.Adobe Acrobat Pro
10.1.1
sample5.pdf
test.pdf