填写pdfformfiller2

时间:2015-07-24 13:45:33

标签: java pdf pdf-generation itext

我目前正在编写一个脚本,将一组项目数据填充到模板PDF的给定表单字段中,然后将这些文档保存到存储库以供项目成员进一步编辑(文档比自动填充的字段多得多) )。

模板PDF是我之前在Adobe InDesign中创建的,然后用"扩展功能"保存。在Adobe Acrobat Pro中,可以在免费的Acrobat Reader和pdfformfiller2中进行编辑。

iText的这个小java包装器可以用utf8文本填充PDF表单,这对我的脚本很有效。我使用的命令是:

java -jar pdfformfiller.jar doc1_template.pdf -f text_input.txt doc1_filled.pdf

问题是,在填充数据后,pdfformfiller2会输出doc1_filled.pdf,它只能再次在Adobe Acrobat Pro中编辑。由于该脚本旨在自动运行,因此我无法使用"扩展功能"他们被脚本填满后再次。是否有任何选项或修复包装代码来解决这个问题?

顺便说一下。选项" -flatten" pdfformfiller2已禁用。

1 个答案:

答案 0 :(得分:0)

pdfformfiller2未使用增量更新填写表单。因此,它会自动中断PDF中存在的任何签名。 (关于信息安全的背景cf. this answer。)

特殊类型的签名,使用权签名是用于授予“扩展​​功能”的机制。因此,正如观察到的那样,pdfformfiller2打破了“扩展功能”。

您可以尝试在替换

后重新编译pdfformfiller2
new PdfStamper(reader, os, '\0')

通过

new PdfStamper(reader, os, '\0', true)

使用增量更新。 (对于背景cf. this answer;在追加模式中,iText PdfStamper生成增量更新.iText是pdfformfiller2使用的PDF库。)