【发布时间】:2018-01-25 11:46:39
【问题描述】:
我在将现有 acrofield 从 pdf 导入另一个 pdf 时遇到问题。 这两个pdf是相似的。我尝试导入并保存文件(下面的代码)。如果我从文件系统打开它,我看不到更改,但如果我用 pdfbox 打开它,我会看到之前插入的 acrofile。 我注意到文件大小增加了,但是当我打开它时,我没有看到可填写的字段。
提前谢谢你
PDDocument documentSrc = PDDocument.load(new File(SRC));
PDAcroForm acroFormSrc = documentSrc.getDocumentCatalog().getAcroForm();
PDDocument documentDest = PDDocument.load(new File(DEST));
PDAcroForm acroFormDest = new PDAcroForm(documentDest);
System.out.println("\n\n\n----------> FIELDS OF DOC SOURCE");
for(PDField field : acroFormSrc.getFields()) {
System.out.println(field);
}
acroFormDest.setCacheFields(true);
acroFormDest.setFields(acroFormSrc.getFields());
documentDest.getDocumentCatalog().setAcroForm(acroFormDest);
documentDest.save(DEST_MERGED);
documentDest.close();
documentSrc.close();
PDDocument documentMERGED = PDDocument.load(new File(DEST_MERGED));
PDAcroForm acroFormMERGED = documentMERGED.getDocumentCatalog().getAcroForm();
System.out.println("\n\n\n----------> FIELDS OF DOC MERGED");
for(PDField field : acroFormMERGED.getFields()) {
System.out.println(field);
}
documentMERGED.close();
【问题讨论】:
-
您还需要复制注释,并修复页面引用。
-
您不小心用
itext标记了您的问题。我将删除标签。 -
感谢您的干预。当您谈论引用时,意图 COSObject?
-
小部件注解有 getPage / setPage 方法。我认为最简单的方法是浏览您的页面,获取注释,然后使用相应的“新”页面更新每个页面。可能还有更多我想念的东西......例如acroform 的默认资源。
-
它可以工作,但是当我插入文本时,它看起来不像原始文本。可能是你说的资源。可能?您还有其他建议吗?
标签: java pdf import pdfbox acrofields