我有一个PDF文件(不是由我创建的 - 我无法控制设计等),它允许用户在Adobe Reader中填写一些表单字段并保存结果.我想使用以下步骤自动化填充字段的过程:
我很高兴使用PHP,Perl,Python或Java来执行步骤2-5(按优先级降序排列),但我使用的任何东西都必须在Linux下工作(即它不能依赖于仅在例如Windows).
最终的结果应是普通用户可以打开和打印,但不能修改(我敢肯定,高级用户可以找到一种方法,这样做,但我承认,我不能保证对修改完善的安全)的PDF文件.我不想改变PDF的结构,只是填充表单字段.
这样做有标准的软件吗?我已经看过FDF Toolkit的提及,但我不完全确定这是否是我想要的,以及它是否允许我之后锁定文件,以及我想做的是否适合EULA.
编辑:最后的答案是使用iText的(由Mark斯托勒的建议),但实现它作为一个Web服务,它允许你在表单字段名称和值和PDF文件的"样板"的数组通过.根据AGPL,Web服务将是开源的(并且在我编写之后可以在GitHub上获得),但是连接到它的任何东西都不一定是.
任意数量的不同库都可以填写字段值.我偏爱iText(java)或iTextSharp(c#).几年前我用Java写过一篇.这并不难.有很多.搜索SO,你会找到他们.
有几个不同级别的"锁定领域".
每个人都有利弊.
旗帜:没有太安全.表单数据仍然易于访问.滚动字段仍会滚动.
扁平化:几乎完全相反.修改起来比较困难(虽然远非重要).表单数据只能通过文本提取来提取(这很难,但变得越来越普遍).包含比可见内容更多的内容的列表和文本字段将不再滚动.
压扁形式的能力相对较少.同样,iText可以做到这一点(就像iTextSharp一样),但我不知道任何其他第三方库可以......我确信它们存在,我只是无法将它们命名为我的头脑.