PDF表单分为两大类: 静态PDF表单和交互式PDF表单. 所谓静态 PDF表单就是没有任何交互元素的传统 PDF文档。这种表单是由文本、点、线和图形等静态元素组成的。像产品说明书,上市公司公告, 武侠小说PDF扫描版等一类的,都属于静态PDF表单。说通俗一点,静态PDF表单的主要作用是给读者提供相应信息,它的内容是不会被修改的。

另外一种PDF表单就是交互式PDF表单,它会提供一些可选择的控件,如按钮,编辑框,下拉框,列表等,供用户选择或者填写。交互式PDF表单不仅提供给用户一些信息,而且它还需要用户通过编辑,选择等操作,提供一些信息从而达到交互的目的。

交互式PDF表单也被分为两种:
第一种叫做AcroForm, 它是PDF Specification 1.2 中引入的。 这种表单是从用户那里通过交互方式收集信息的字段集。交互式表单的内容和属性都是由一个交互式表单字典定义的,这个字典引用自 PDF 文件的文档类别的 AcroForm 条目。

第二种叫做XML Forms Architecture(XFA)。顾名思义,它是嵌入动态 XML 的 XML Forms Architecture(XFA)表单。XFA 提供了基于模板的语法和处理规则集,它们允许用户构建交互式表单。基于模板的语法将定义用户在其中提供数据的字段。XFA 的开放特性将提供描述交互式表单的通用 XML 语法,这是在表单处理应用程序之间执行与表单相关的交互操作的通用基础。这种开放特性意味着将在各种业务中应用 XFA。

与静态的PDF表单相比, 交互式的XFA表单提供了大量功能:

• 工作流程:这类表单包括数据表示、数据捕捉和数据编辑。XFA 被用作将数据提交到后台服务器中的前端应用程序;它还可用于打印目的。典型的应用如Adobe公司的LiveCycle Workflow application.

• 动态交互:动态功能从具有动态计算、验证及其他特性的交互式、可编辑的表单,到服务器生成的、机器填充的表单等各不相同。

• 动态布局:表单可以自动重新调整自身以适应用户或外部数据源(例如数据库服务器)提供的数据。举个例子,如果从服务器中检索到的数据有 100 行,但是表单设计之初只有30行,当导入数据的时候,如果是传统的表单,那么它只会接收前30行的数据,后面的数据就会被丢掉;动态的XFA表单就不同了,它会自动调整表单以适应数据源,所以动态表单会把100行数据全盘接收并显示 。这一特性也就是我们常说的Dynamic PDF的优势之一。

• 复杂度:与传统的静态表单比,动态文档将基于数据内容进行装配,而大型生产运行至少会包含数十万个事务。

AcroForm表单相比,XFA交互表单在以下几方面更加高级:

• XFA 可以在基于 XML 的工作流中使用。
• XFA 可以很容易的从 XFA 模板中分离数据,这就实现了在支持的数据结构中拥有更大的灵活性并可以独立于表单封装数据。
• XFA 可以实现动态增长的表单的数据自动匹配。
• XFA 可以指定 Web 交互操作,例如 HTTP 和 Web 服务描述语言(Web Services Description Language,WSDL)。此类交互操作可用于将数据提交给服务器,或请求服务器执行计算并返回结果。
• XFA 可以与其他 XML 语法结合使用来实习更加复杂的功能。

由此可以看出交互式PDF表单,特别是基于XFA标准的交互式PDF表单的功能是十分强大的,那么在下一节中,我们将介绍如何使用Adobe提供的IDE工具来进行交互式表单的创建。