我目前正在编写一个脚本,将一组项目数据填充到模板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已禁用。
答案 0 :(得分:0)
pdfformfiller2未使用增量更新填写表单。因此,它会自动中断PDF中存在的任何签名。 (关于信息安全的背景cf. this answer。)
特殊类型的签名,使用权签名是用于授予“扩展功能”的机制。因此,正如观察到的那样,pdfformfiller2打破了“扩展功能”。
您可以尝试在替换
后重新编译pdfformfiller2new PdfStamper(reader, os, '\0')
通过
new PdfStamper(reader, os, '\0', true)
使用增量更新。 (对于背景cf. this answer;在追加模式中,iText PdfStamper
生成增量更新.iText是pdfformfiller2使用的PDF库。)