填充数据库中的PDF字段

时间:2011-03-29 15:43:58

标签: pdf

我有一个PDF文件(不是由我创建的 - 我无法控制设计等),它允许用户在Adobe Reader中填写一些表单字段并保存结果。我想使用以下步骤自动化填充字段的过程:

  1. 从数据库中获取数据。
  2. 打开PDF模板。
  3. 使用数据填充表单字段。
  4. 将修改后的文件保存到磁盘上的单独位置。
  5. 锁定已修改的文件,以便无法再编辑表单字段。
  6. 将文件发送给用户。
  7. 我很高兴地使用PHP,Perl和Python或Java来执行步骤2-5(按优先顺序排列),但无论我用了Linux下工作(即它必须不依赖于它们的库仅适用于Windows。)

    最终的结果应是普通用户可以打开和打印,但不能修改(我敢肯定,高级用户可以找到一种方法,这样做的一个PDF,但我承认,我不能保证对修改完善的安全)。我不想改变PDF的结构,只是填充表单字段。

    这样做有标准的软件吗?我见过FDF工具包中提到,但我不能完全肯定,如果这就是我想要什么,它是否能让我后来锁定文件,以及是否是我想要做的EULA结合使用。

    编辑:最终的答案是使用iText的(由Mark斯托勒的建议),但实现它作为一个Web服务,它允许你在表单字段名称和值和PDF文件的“样板”的数组通过。根据AGPL,Web服务将是开源的(并且在我编写之后可以在GitHub上获得),但是连接到它的任何东西都不一定是。

1 个答案:

答案 0 :(得分:5)

灌装

任意数量的不同库都可以填写字段值。我偏爱iText(java)或iTextSharp(c#)。几年前我用Java写过一篇。这并不难。有很多。搜索SO,你会找到他们。

锁定

有几个不同级别的“锁定字段”。

  • 每个字段都有一个“只读”标志。就其他能够设置字段值的库而言,这几乎是一种礼貌。事实上,它通常被认为是指“ui无法做出改变”。无论如何,表单脚本都可以。
  • 表单展平:直接将字段绘制到页面中并删除所有交互性。

每个人都有利有弊。

举报:没有太安全了。表单数据仍然易于访问。滚动字段仍然滚动。
展平:恰恰相反。修改起来比较困难(虽然远非重要)。表单数据只能通过文本提取来提取(这很难,但变得越来越普遍)。列表&包含比可见内容更多的内容的文本字段将不再滚动。

平整表格的能力相对较少。同样,iText可以做到这一点(就像iTextSharp一样),但我不知道任何其他第三方库可以......我确信它们存在,我只是无法将它们命名为我的头脑。