1

当我尝试使用Adob​​e LiveCycle ES4 Designer打开常规 PDF(包含XFA 表单)时,它会提示一个窗口(新表单助手)并要求我选择如何使用 PDF。选项包括:

  • 创建具有固定页面的交互式表单
  • 创建具有可流动布局的交互式表单

我选择第一个并继续。然后,什么都不做,我保存文件(使用另存为)。另存为类型为“ Acrobat (Static) PDF Form ( .pdf)*”,事实上,这是此方案的唯一选择。保存文件后,我发现虽然这两个文件在 PDF 阅读器中外观相同,但保存的文件和原始文件不同,因此保存的文件包含 XFA 表单。就我而言,XFA 表格如下:

<topmostSubform xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup"/>

我对此有两个问题。

  1. 我可以使用 API 打开常规 PDF 并向其中添加 XFA 表单而不损坏原始 PDF 内容吗?
  2. 如果第一个是可能的,我可以再次使用 API 向该 PDF添加不可见字段吗?

简而言之,我想要做的是将填充的 XFA 表单添加到常规 PDF 中,我问是否可以使用 API?

4

2 回答 2

1

当您选择“使用固定页面创建交互式表单”时,从概念上讲,您正在现有 PDF 上创建 XFA“覆盖”。您可以添加字段,但不能添加样板。

预期的用例是您有一个 PDF 格式的现有纸质表单,并且您希望快速向其中添加字段以使其具有交互性。您实际上是在使用一些额外的 XFA 功能来扩充现有的 PDF。由于图稿仍为 PDF 格式,因此未对其进行任何转换,并且与原始未更改的文档保持一致。但是,您并没有创建真正的 XFA 表单,因为只有字段以 XFA 格式定义,因此您不能将其存储为 XDP。它只能重新保存为 PDF。此外,由于 PDF 图稿没有分解为可移动的部分(即子表单),因此表单无法动态增长/收缩。这就是它只能保存为静态 PDF 的原因。请在此处此处查看 Adob​​e LiveCycle Designer 帮助。

当您选择“使用可流动布局创建交互式表单”时,Designer 会将 PDF 转换为 XFA XML 格式。您可以与设计进行交互,就像您使用 LiveCycle Designer 从头开始​​创建所有内容一样。

由于此方法实际上将 PDF 图稿转换为 XML,因此某些图稿转换的可能性更高。它可能需要一些手动修复才能使表单看起来与以前完全一样。一些复杂的 PDF 可能根本无法很好地转换。字体可能不可用,等等。同样,这在此处的 Adob​​e LiveCycle Designer 帮助中有所介绍。

后一种方法的好处是您拥有完整的 XFA 表单定义,可以在任何可以使用 LiveCycle Designer 中从头开发的表单的任何地方使用。可以对其进行修改以添加动态部分,这些部分会增长或缩小以匹配数据。基于 XFA 的表单的全部表现力被打开了。

WRT你的问题:

  1. 您可以打开常规 PDF 并将 XFA 字段添加到表单。然后,您可以使用这些字段来捕获数据并将该数据另存为 XML 数据。

  2. 您也可以添加不可见的 XFA 字段。

于 2014-12-18T17:56:23.043 回答
1

Adobe LiveCycle 中没有可让您将 XFAF(XFA 前景)表单插入 PDF 的 API。

但是,使用各种 PDF 库应该是可行的。您需要创建要添加的表单,然后使用 iText、PDFBox 或 Big Faceless 等 PDF 库将其插入 PDF。然而,插入有点棘手,因为 XDP 在 PDF 中被分成多个部分。我将使用 LiveCycle Designer 生成一个 XFAF PDF,然后使用您打算用来重现该过程的同一个 PDF 库对其进行检查。

Presence 属性并未明确从 XFAF 配置文件中排除,因此不可见字段应该可以工作,但是我会先使用 LiveCycle Designer 对其进行测试。如果您将不可见字段添加到固定页面 PDF 中并且它可以工作(即您测试生成的 PDF - 我毫不怀疑它会让您添加它们,但它可能不会使它们不可见)那么您应该能够使用以编程方式构建的 XFAF PDF 进行模拟。

只是一个警告。这不是我认为 LiveCycle Designer 团队之外的许多人尝试过的事情。如果您沿着这条路线前进,您将开辟道路。

于 2014-12-18T23:54:49.533 回答