【发布时间】:2014-06-10 19:27:15
【问题描述】:
我在尝试使用 Apache PDFBOX(1.8.5) 从字段中设置一些内容时遇到问题。我有几个不同的静态 PDF 用于测试。使用以下代码,我可以设置表单字段的值,并保存生成的 PDF。然后我可以在 Adobe Reader 中打开这个 PDF 并查看结果:
PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
pdfTemplate.setAllSecurityToBeRemoved(true);
PDAcroForm acroForm = docCatalog.getAcroForm();
List fields = acroForm.getFields();
Iterator fieldsIter = fields.iterator();
while( fieldsIter.hasNext())
{
PDField field = (PDField)fieldsIter.next();
if(field instanceof PDTextbox){
((PDTextbox)field).setValue("STATIC PDFBOX EDIT");
}
}
然后我最终保存了表单。对于静态 PDF:
- PDF 版本:1.6 (Acrobat 7.x)
- PDF 版本:1.7 (Acrobat 8.x)
这很好用。我可以在 Adobe Reader XI 中打开文档并在表单中查看正确的值。
对于静态 PDF:
- PDF 版本:1.7 Adobe Extension Level 3(Acrobat 9.x)
- PDF 版本:1.7 Adobe Extension Level 8(Acrobat X)
- PDF 版本:1.7 Adobe Extension Level 11(Acrobat XI)
这似乎不起作用。当我在 Adobe Reader XI 中打开生成的表单时,这些字段似乎没有被填充。但是,如果我在 Firefox 或 Chrome 浏览器的 PDF 查看器中打开 PDF,这些字段会显示为已填充。
如何设置这些字段,以便在 Adobe Reader XI 中查看时显示这些值?
编辑:可在此处找到示例 PDF:https://github.com/bamundson/PDFExample
【问题讨论】:
-
根据我使用 iText 的经验,我可以想到两个原因:(1)NeedAppearances 值的不同设置; (2) 字段中的DA条目错误。如果您使用 iText 填写表格会发生什么?
-
请提供样本 PDF 以供分析。
-
我在原始帖子中添加了一个链接,指向我正在使用的一些示例 PDF,版本 9、X 和 XI。将新字段值写入这些 PDF 可以在最新版本的 iText 中正常工作
标签: java pdfbox adobe-reader