Adobe ColdFusion 8

Populating a PDF form with XML data

Some applications submit PDF form data in an XML data file. For example, the e-mail submit option in forms created in LiveCycle generates an XML data file and delivers it as an attachment to the specified e-mail address. This is an efficient way to transmit and archive data because XML data files are smaller than PDF files. However, XML files are not user-friendly: to view the file in its original format, the user has to open the PDF form template in Acrobat and import the XML data file.

ColdFusion automates the process of reuniting XML data with the PDF form that generated it. To do this, you use the populate action of the cfpdfform tag, specify the source, which is the PDF form used as a template, and specify the XML data file that contains the information submitted by the person who completed the form. You also have the option to save the result to a new file, which lets you save the completed forms in their original format (and not just the form data). In the following example, ColdFusion populates the payslipTemplate.pdf form with data from the formdata.xml data file and writes the form to a new PDF file called employeeid123.pdf:

<cfpdfform source="c:\payslipTemplate.pdf" destination="c:\empPayslips\employeeid123.pdf" action="populate" XMLdata="c:\formdata.xml"/>

For forms created in LiveCycle, you have the option to write the output to an XML Data Package (XDP) file rather than a PDF file. For more information, see Writing LiveCycle form output to an XDP file.

Note: If you do not specify a destination, the populate action displays the populated PDF form in a browser window.

When you populate a form with an XML data file, ensure that the XML data is in the appropriate format. The format of the XML data file differs based on whether it was generated from Acrobat or LiveCycle. Acrobat generates an XML Forms Data Format (XFDF) file format. The following example shows the XFDF format:

<?xml version="1.0" encoding="UTF-8"?>
- <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
    - <fields>
        - <field name="textname">
                <value>textvalue</value>
            </field>
        - <field name="textname1">
                <value>textvalue1</value>
            </field> 
        </fields> 
    </xfdf>

Forms created in LiveCycle require an XML Forms Architecture (XFA) format. The following example shows an XFA format:

<?xml version="1.0" encoding="UTF-8"?>
- <xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"> 
- <form1>
        <SSN>354325426</SSN>
        <fname>coldfusion</fname>
        <num>354325426.00</num> 
    - <Subform1>
            <SSN />
        </Subform1>
</form1>
</xfa>