我们正在使用iText自动填写许多文档的表单字段,然后将这些文档串联为一个生成的PDF。

Adobe引入了“ Acrobat Reader中的扩展功能”选项,以允许Acrobat Reader的用户通过更改表单字段来保存PDF。

这是iText只能解决的Adobe专有功能。

我已经能够在附加模式下使用PdfStamper类对一个特定文档执行变通方法。由于PDF包含表单字段,因此我们使用PdfCopyFields类执行串联。 PdfCopyFields没有附加模式。

还有其他方法可以使用iText(任何版本)将PDF附加到预先存在的PDF中吗?

最佳答案

有可能,但是需要您足够了解修改PdfCopyFields的内容,以便将其保存在追加模式下。

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

大绊脚石
PDF中具有相同名称的所有字段也共享相同的值。如果在生成的PDF中有两个相同表单的副本,那么您将有两个相同数据的视图。

即使采用不同的形式,如果您碰巧遇到名称冲突(此处的“城市”可能是当前地址的一部分,而在此处的“城市”可能是他们出生的城市),则它们会将相同的值组合在一起。

如果您拥有一个全面的系统,使您所有的命名冲突都经过深思熟虑,那就太好了,该死了。如果“名字”始终是指同一个人,并且对其进行更改,则应在所有有问题的表格中更改其值,那么您就很高兴了。如果不是,那就是为什么PdfStamper的扁平化功能如此受欢迎的原因。

另一种选择是“在将表单粘合在一起之前重命名所有字段”,以避免发生这种冲突。

即使使用了“综合系统”,我仍然建议您使用一个小工具,它将按照您建议的合并和查找碰撞的形式进行处理。也许在一些测试数据中列出它们以及它们的值。您可能会沿“飞行:住所,普通”和“飞行:西南航空”的路线捕捉一些东西。

也许不是那个特定的例子,但是谁知道呢? ;)

09-18 13:37