ColdFusion 8 lets you incorporate interactive PDF forms in your application. You can extract data submitted from the PDF forms, populate form fields from an XML data file or a database, and embed PDF forms in PDF documents created in ColdFusion.
ColdFusion supports interactive forms created with Adobe Acrobat forms and with LiveCycle. In Adobe Acrobat 6.0 or earlier, you can create interactive Acroforms. Using Adobe LiveCycle Designer, which is provided with Adobe Acrobat Professional 7.0 and later, you can generate interactive forms.
The type of form is significant because it affects how you manipulate the data in ColdFusion. For example, you cannot use an XML data file generated from a form created in Acrobat to populate a form created in LiveCycle, and vice versa, because the XML file formats differ between the two types of forms.
Forms created in Acrobat use the XML Forms Data Format (XFDF) file format. Forms created in LiveCycle use the XML Forms Architecture (XFA) format introduced in Acrobat and Adobe Reader 6. For examples, see Populating a PDF form with XML data. The file format also affects how you prefill fields in a form from a data source, because you must map the data structure as well as the field names. For examples, see Prefilling PDF form fields.
The use of JavaScript also differs based on the context. The JavaScript Object Model in a PDF file differs from the HTML JavaScript Object Model. Consequently, scripts written in HTML JavaScript do not apply to PDF files. Also, JavaScript differs between forms created in Acrobat and those created in LiveCycle: scripts written in one format do not work with other.
ColdFusion 8 introduced several tags for manipulating PDF forms:
Tag |
Description |
---|---|
cfpdfform |
Reads data from a form and writes it to a file or populates a form with data from a data source. |
cfpdfformparam |
A child tag of the cfpdfform tag or the cfpdfsubform tag; populates individual fields in PDF forms. |
cfpdfsubform |
A child tag of the cfpdfform tag; creates the hierarchy of the PDF form so that form fields are filled properly. The cfpdfsubform tag contains one or more cfpdpformparam tags. |
The following table describes a few of the tasks that you can perform with PDF forms:
Task |
Tags and actions |
---|---|
Populate a PDF form with XML data |
populate action of the cfpdf tag |
Prefill individual fields in a PDF form with data from a data source |
populate action of the cfpdfform tag with the cfpdfsubform and cfpdfparam tags |
Determine the structure of a PDF form |
read action of the cfpdfform tag with the cfdump tag |
Embed an interactive PDF form within a PDF document |
populate action of the cfpdfform tag within the cfdocument tag. Note: The cfpdfform tag must be at the same level as the cfdocumentsection tags, not contained within them. |
Write a PDF form directly to the browser |
populate action of the cfpdfform tag with the destination attribute not specified |
Write PDF form output to an XML file |
read action of the cfpdfform tag |
Print a PDF form from ColdFusion |
cfprint tag |
Extract data from a PDF form submission |
source="#PDF.Content#" for the read action of the cfpdfform tag |
Write data extracted from a PDF form submission to a PDF file |
source="#PDF.Content#" for the populate action of the cfpdfform tag, and the destination attribute |
Write data in a form generated in LiveCycle to an XDP file |
source="#PDF.Content#" for the populate action of the cfpdfform tag, and an XDP extension for the output file |
Extract data from an HTTP post submission |
cfdump tag determines the structure of the form data; map the form fields to the output fields |
Flatten forms generated in Acrobat (this does not apply to forms generated in LiveCycle) |
cfpdf action="write" flatten="yes" For more information, see Flattening forms created in Acrobat. |
Merge forms generated in Acrobat or LiveCycle with other PDF documents |
cfpdf action="merge" For more information, see Merging PDF documents. |