2013-02-21 115 views
4

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

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

我已经完成了一些搜索,但没有什么真正确定从XML创建PDF的。我们希望能够定义需要哪些字段,下拉列表,文本框等。

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

回答

7

附录(请参阅评论):我是iText软件集团的首席执行官,iText(开源PDF库)的原始开发人员,以及由Manning出版的两本'iText in Action' 。我是NBN的成员,这是比利时标准办公室(包括ISO-32000和相关的PDF标准)。我不隶属于Adobe,Open Office等...

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

在基于AcroForm的表单中,表单使用PDF语法描述,每个字段都有固定的坐标。把它想成数码纸。如果您有表单代表发票,那么这样的表单可以提供20条发票行。假设你需要更少的线,你会有一些未使用的字段,将保持可见。假设你需要更多的线条,你将无法将它们全部整合到表单中。我已经描述了如何使用Open Office在chapter 6 of my book中创建这样的表单(请参阅第6.3.5节)。与XML的唯一联系是您可以导入/导出XFDF格式的这种格式,这是ISO-32000-1中提到的规范。它是Forms数据格式(FDF)的XML版本。如果你想以XML的形式将人们的回应存储在服务器上,这可能是理想的。您可以测试here。填写表格并选择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表单可以非常动态。例如参见form for movies。它只包含一个页面。现在让我们注入一个XML file with 120 movies。结果是form with 23 pages。正如你所看到的,一部电影的字段重复了120次。如果需要,还可以重复与导演和制作电影的国家/地区的字段。一个主要的缺点是,这种形式只能在Adobe Reader中呈现;它们不会出现在Apple的Preview和许多其他非Adobe PDF查看器中。

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

附录:

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

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

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

+0

谢谢你的背景资料 - 这对我很有用。 – 2016-01-14 03:42:50