PDFTK 和删除 XFA 格式

PDFTK and removing the XFA format

从 PDF 表单中删除 XFA 格式是否会出现任何问题?我正在使用 PDFTK 填写表单,发现如果表单是 XFA,那么 PDFTK 不起作用,除非我先执行 drop_xfa 命令来创建新的模板表单。我确实注意到的一件事是,如果我不执行 drop_xfa,我可以看到 Acrobat Reader 上预先填写的字段,但 Acrobat Pro 上看不到。 Ubuntu 文档查看器等其他视图也可以。我不介意执行 drop_xfa,但只是检查一下我对我不知道的表单执行此操作是否存在问题。

示例:如果表格已填写,需要在系统上读取以抓取 fields/values 进行处理。

提前致谢。

PDF格式分为三种:

  • 使用 AcroForm 技术的表单。在这种情况下,每个字段对应一个或多个在特定页面上具有固定位置的小部件。仅使用 PDF 语法描述表单。
  • 使用 XML 表单架构 (XFA) 的动态表单。在这种情况下,PDF 文件只不过是描述整个表单的 XML 文件的容器。我们将此称为 dynamic XFA,因为表单可以根据添加的数据进行扩展或收缩:1 页表单可以通过添加更多数据变成 100 页表单.
  • 结合了 AcroForm 和 XFA 技术的混合表单。在这种情况下,表单被描述了两次:一次使用 PDF 对象;使用一次 XML。显然,这样的表单不是动态的:AcroForm 部分仍然定义了在特定页面上的绝对位置定义的小部件注释。表单无法适应其数据。

如果您有 动态 XFA 表单,删除 XML 将删除完整的表单。不会有任何剩余。

但是,您似乎遇到了一种由 AcroForm 和 XFA 语法组成的混合形式。混合形式很痛苦,因为它们经常导致混乱。例如:不支持 XFA 的查看器将向您显示存储在 AcroForm 中的数据。 XFA 感知的查看器可以优先选择存储在 XFA 表单中的数据。你可能会问,问题是什么?两种形式不是等价的吗?

理想情况下,两个版本的表单确实是等效的,但是:

  • 如果表格填写不正确,AcroForm 可能与 XFA 表格不同。
  • XFA 具有比 AcroForm 技术更多的功能。例如:XFA 表单中的文本字段可以 对齐(类似于 HTML 中的 <p align="justify">)。但是,此选项在 AcroForm 文本字段中不存在(您只能有左对齐、居中对齐或右对齐)。因此,如果您有在 XFA 表单中对齐的文本,但您只查看 AcroForm,则文本不会对齐(因为 AcroForm 文本字段中不存在对齐文本)。

这是一个很长的答案来解释,如果您有混合形式,在大多数情况下 可以放弃 XFA 部分。您可能会有细微差别,但如果您对 Ubuntu 文档查看器(不支持 XFA 的查看器)中的表单外观满意,那么您应该没问题。

免责声明:我是 iText 集团的首席执行官。 Pdftk 是基于已过时且不再受支持的 iText 版本的第三方工具。 iText Group 不认可使用 Pdftk。