4

我想通过 xml 文档创建一个可填写的 PDF 表单?

我们目前有一个包含清单项目的数据库,然后我们将其输出为 xml 格式。我们可以生成一些不错的 HTML 5 清单,但我们现在正在转向 PDF 表单。

我已经进行了一些搜索,但是从 XML 创建 PDF 并没有真正确定的内容。我们希望能够定义哪些字段是必需的、下拉列表、文本框等。

如何在给定 XML 文档的情况下创建 PDF 可填写表单?

4

1 回答 1

7

附录(见评论):我是 iText Software Group 的 CEO,iText(一个开源 PDF 库)的原始开发者,以及 Manning 出版的两本“iText in Action”书籍的作者。我是 NBN 的成员,NBN 是比利时标准办公室(包括 ISO-32000 和相关 PDF 标准)。我不隶属于 Adob​​e、Open Office 等...

PDF 中有两种“风格”的表单:基于 AcroForm 的表单和 XFA 表单。

在基于 AcroForm 的表单中,表单使用 PDF 语法进行描述,并且每个字段都有固定的坐标。把它想象成数字纸。如果您有一个代表发票的表格,那么这样的表格可以提供 20 个发票行。假设您需要更少的行,您将有许多未使用的字段将保持可见。假设您需要更多行,您将无法将它们全部放入表单中。我在本书的第 6 章中描述了如何使用 Open Office 创建这样的表单(参见第 6.3.5 节)。与 XML 的唯一链接是您可以以 XFDF 格式导入/导出此类表单,这是 ISO-32000-1 中引用的规范。它是表单数据格式 (FDF) 的 XML 版本。如果您想以 XML 的形式将人们的响应存储在服务器上,这可能是理想的选择。在这里。填写表格并选择 XFDF 按钮。接收您的请求的 servlet 将返回由 Adob​​e Reader 发送到服务器的流。

看看 XML Forms Architecture (XFA) 可能也很有趣。在这种情况下,PDF 充当 XML 流的容器。嵌入的 XML 由不同的部分组成,其中模板和数据集是最重要的。在模板中,特定的语法用于定义表单的外观(它必须如何由 Adob​​e Reader 呈现)。数据集部分由类似于 XSD 的 dataDescription 和数据组成。XFA 的主要优点之一是数据由使用您想要的任何模式的 XML 组成。XFA 表单通常使用 Adob​​e LiveCycle Designer 创建,您可以在其中将自己的 XSD 作为数据源导入,然后您可以开始设计表单。结果将是一个空模板。填写表单就像将 XML 注入数据标签一样简单。

哪种类型的表格最适合您?

AcroForms 总是静态的。如果您的表格需要与纸上的现有表格完全匹配,这是您的最佳匹配。如果您需要可以动态增长的表单(很像 HTML),您很快就会对 AcroForms 感到沮丧,尽管有些变通方法似乎可以完美运行。

XML 表单可以是非常动态的。例如,请参见电影表格。它仅包含一页。现在让我们注入一个包含 120 部电影的 XML 文件。结果是一个有 23 页的表格。如您所见,一部电影的字段重复了 120 次。如有必要,也可以重复与导演和电影制作国家有关的领域。一个主要的缺点是这样的表格只能在 Adob​​e Reader 中呈现;它们不会出现在 Apple 的 Preview 和许多其他非 Adob​​e PDF 查看器中。

我不确定这个答案是否对您有所帮助。如果不是,请澄清,因为您似乎专注于复选框等细节。

附录:

啊哈,第二次阅读您的问题,我现在发现我误解了这个问题。您不想在填写表单后创建 XML 输出。您想创建一个基于 XML 输入的表单(您的问题中关于输入/输出的观点令人困惑)。

所以:您没有使用 Open Office、Adobe Acrobat 或 Adob​​e LiveCycle Designer 来创建表单。您想将自己的自定义 XML 转换为交互式 PDF。除了 Adob​​e LiveCycle ES 之外,我不知道有任何软件可以让您基于 XML 创建 XFA 表单。如果 AcroForms 是可接受的,那么您需要为您的自定义 XML 编写解析器并使用 PDF 库来创建表单。这样的 PDF 库可以是 iText(可能结合 XML Worker 的自定义实现),但请注意,这将需要一些额外的编程。

没有“开箱即用”的解决方案可以自动将自定义 XML 转换为交互式 PDF 表单。

于 2013-02-21T14:33:43.863 回答