2011-01-05 98 views
8

我们使用iText自动在多个文档上填写表单字段,然后将这些文档连接成一个生成的PDF。在Acrobat Reader中连接PDF并保留扩展功能

Adob​​e在Acrobat Reader中引入了“扩展功能”选项,以允许Acrobat Reader用户通过对表单域的更改保存PDF。

这是Adobe专有的一项功能,iText只能解决这个问题。

我已经能够在追加模式下使用PdfStamper类执行一个特定文档的工作。由于PDF包含表单字段,因此我们使用PdfCopyFields类来执行拼接。 PdfCopyFields没有附加模式。

是否有另一种方法可以使用iText(任何版本)将PDF附加到已有的PDF中?

回答

5

这是可能的,但需要您足够的知识来修改PdfCopyFields,以便以附加模式保存。

你可以复制的功能,并使用它PdfStamper的顶部(在自己的类或其他方式),子类PdfCopyFields,或直接修改PdfCopyFields。

Big Stumbling Block 所有在PDF中具有相同名称的字段都具有相同的值。如果您在生成的PDF中有相同表单的两个副本,那么您有相同数据的两个视图。

即使采用不同的形式,如果碰巧遇到名称冲突(这里的“城市”可能是当前地址的一部分,而在那里可能是他们出生的城市),他们会一起欢乐相同的价值。

如果你有一个全面的系统,所有的命名冲突都是故意的,那真是太好了,那就打破了。如果“名字”总是指同一个人,并且改变它应该改变所有表格中的值,那么你就是金。如果没有......这就是为什么PdfStamper的扁平化能力如此受欢迎。

替代方法是“在将表格粘贴在一起之前重命名所有字段”以避免此类冲突。

即使有一个综合系统,我仍然建议掀起一个小工具,它会通过您建议合并的表单并寻找冲突。也许在一些测试数据中列出它们的值。你可能会在“Fly:House,Common”和“Fly:Southwest Airlines”之间找到一些东西。

可能不是那个特殊的例子,但是谁知道? ;)

+0

谢谢马克。对于字段名称冲突问题,我只是根据附加文档的计数向每个字段添加一个后缀。它适合我们。 – 2011-01-08 13:37:08