我想通过 xml 文档创建一个可填写的 PDF 表单?
我们目前有一个包含清单项目的数据库,然后我们将其输出为 xml 格式。我们可以生成一些不错的 HTML 5 清单,但我们现在正在转向 PDF 表单。
我已经进行了一些搜索,但是从 XML 创建 PDF 并没有真正确定的内容。我们希望能够定义哪些字段是必需的、下拉列表、文本框等。
如何在给定 XML 文档的情况下创建 PDF 可填写表单?
附录(见评论):我是 iText Software Group 的 CEO,iText(一个开源 PDF 库)的原始开发者,以及 Manning 出版的两本“iText in Action”书籍的作者。我是 NBN 的成员,NBN 是比利时标准办公室(包括 ISO-32000 和相关 PDF 标准)。我不隶属于 Adobe、Open Office 等...
PDF 中有两种“风格”的表单:基于 AcroForm 的表单和 XFA 表单。
在基于 AcroForm 的表单中,表单使用 PDF 语法进行描述,并且每个字段都有固定的坐标。把它想象成数字纸。如果您有一个代表发票的表格,那么这样的表格可以提供 20 个发票行。假设您需要更少的行,您将有许多未使用的字段将保持可见。假设您需要更多行,您将无法将它们全部放入表单中。我在本书的第 6 章中描述了如何使用 Open Office 创建这样的表单(参见第 6.3.5 节)。与 XML 的唯一链接是您可以以 XFDF 格式导入/导出此类表单,这是 ISO-32000-1 中引用的规范。它是表单数据格式 (FDF) 的 XML 版本。如果您想以 XML 的形式将人们的响应存储在服务器上,这可能是理想的选择。在这里。填写表格并选择 XFDF 按钮。接收您的请求的 servlet 将返回由 Adobe Reader 发送到服务器的流。
看看 XML Forms Architecture (XFA) 可能也很有趣。在这种情况下,PDF 充当 XML 流的容器。嵌入的 XML 由不同的部分组成,其中模板和数据集是最重要的。在模板中,特定的语法用于定义表单的外观(它必须如何由 Adobe Reader 呈现)。数据集部分由类似于 XSD 的 dataDescription 和数据组成。XFA 的主要优点之一是数据由使用您想要的任何模式的 XML 组成。XFA 表单通常使用 Adobe LiveCycle Designer 创建,您可以在其中将自己的 XSD 作为数据源导入,然后您可以开始设计表单。结果将是一个空模板。填写表单就像将 XML 注入数据标签一样简单。
哪种类型的表格最适合您?
AcroForms 总是静态的。如果您的表格需要与纸上的现有表格完全匹配,这是您的最佳匹配。如果您需要可以动态增长的表单(很像 HTML),您很快就会对 AcroForms 感到沮丧,尽管有些变通方法似乎可以完美运行。
XML 表单可以是非常动态的。例如,请参见电影表格。它仅包含一页。现在让我们注入一个包含 120 部电影的 XML 文件。结果是一个有 23 页的表格。如您所见,一部电影的字段重复了 120 次。如有必要,也可以重复与导演和电影制作国家有关的领域。一个主要的缺点是这样的表格只能在 Adobe Reader 中呈现;它们不会出现在 Apple 的 Preview 和许多其他非 Adobe PDF 查看器中。
我不确定这个答案是否对您有所帮助。如果不是,请澄清,因为您似乎专注于复选框等细节。
附录:
啊哈,第二次阅读您的问题,我现在发现我误解了这个问题。您不想在填写表单后创建 XML 输出。您想创建一个基于 XML 输入的表单(您的问题中关于输入/输出的观点令人困惑)。
所以:您没有使用 Open Office、Adobe Acrobat 或 Adobe LiveCycle Designer 来创建表单。您想将自己的自定义 XML 转换为交互式 PDF。除了 Adobe LiveCycle ES 之外,我不知道有任何软件可以让您基于 XML 创建 XFA 表单。如果 AcroForms 是可接受的,那么您需要为您的自定义 XML 编写解析器并使用 PDF 库来创建表单。这样的 PDF 库可以是 iText(可能结合 XML Worker 的自定义实现),但请注意,这将需要一些额外的编程。
没有“开箱即用”的解决方案可以自动将自定义 XML 转换为交互式 PDF 表单。