Merge XDP data with dynamic XFA form
Merge XDP data with dynamic XFA form
The following code imports XDP data into a dynamic XFA form.
using (FileStream inFile = new FileStream("Purchase Order.pdf", FileMode.Open, FileAccess.Read))
{
// open
Document document = new Document(inFile);
// import
using (FileStream inXdp = new FileStream("data.xdp", FileMode.Open, FileAccess.Read))
{
XdpFormData xdpData = new XdpFormData(inXdp);
document.Import(xdpData);
}
// save
using (FileStream outFile = new FileStream("Purchase Order Filled.pdf", FileMode.Create, FileAccess.Write))
{
document.Write(outFile);
}
}
Form before and after import
Note how table rows are added dynamically and how content is pushed to the next page.
data.xdp
<?xml version="1.0" encoding="UTF-8"?>
<?xfa generator="XFA2_4" APIVersion="3.6.14118.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2007-06-21T22:17:23Z" uuid="0a7f2f56-4f7e-416d-b914-5bb4414629ad">
<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<form1>
<header>
<txtPONum/>
<dtmDate/>
<txtOrderedByCompanyName>Company Name</txtOrderedByCompanyName>
<txtOrderedByAddress/><txtOrderedByCity/>
<drpOrderedByCountry>Canada</drpOrderedByCountry>
<drpOrderedByStateProv>New Brunswick</drpOrderedByStateProv>
<txtOrderedByZipCode/>
<txtOrderedByPhone/>
<txtOrderedByFax/>
<txtOrderedByContactName/>
<txtDeliverToCompanyName/>
<txtDeliverToAddress/>
<txtDeliverToCity>San Francisco</txtDeliverToCity>
<drpDeliverToCountry>United States</drpDeliverToCountry>
<drpDeliverToStateProv>California</drpDeliverToStateProv>
<txtDeliverToZipCode/>
<txtDeliverTotPhone/>
<txtDeliverToFax/>
<txtDeliverToContactName/>
</header>
<details>
<detailHeader1 xfa:dataNode="dataGroup"/>
<detailHeader2 xfa:dataNode="dataGroup"/>
<detail>
<txtPartNum>580463116</txtPartNum>
<txtDescription>Electric Fuel Pump</txtDescription>
<numQty>1</numQty>
<numUnitPrice>149.95000000</numUnitPrice>
<numAmount>149.95000000</numAmount>
</detail>
<detail>
<txtPartNum>25906311C</txtPartNum>
<txtDescription>Air Flow Meter</txtDescription>
<numQty>1</numQty>
<numUnitPrice>145.95000000</numUnitPrice>
<numAmount>145.95000000</numAmount>
</detail>
<detail>
<txtPartNum>25129637J</txtPartNum>
<txtDescription>Air Intake Sleeve</txtDescription>
<numQty>1</numQty>
<numUnitPrice>98.95000000</numUnitPrice>
<numAmount>98.95000000</numAmount>
</detail>
<total>
<conditions>
<TermsConditions/>
<drpCardType> </drpCardType>
<txtCardNum/>
</conditions>
<totals>
<numTotal>411.75000000</numTotal>
<chkStateTax>0</chkStateTax>
<numStateTaxRate/>
<numStateTax>0.00000000</numStateTax>
<chkFederalTax>0</chkFederalTax>
<numFederalTaxRate/>
<numFederalTax>0.00000000</numFederalTax>
<chkShippingCharge>0</chkShippingCharge>
<numShippingCharge/>
<numGrandTotal>411.75000000</numGrandTotal>
</totals>
</total>
<detail>
<txtPartNum>771128</txtPartNum>
<txtDescription>Fuel Filter</txtDescription>
<numQty>1</numQty>
<numUnitPrice>10.95000000</numUnitPrice>
<numAmount>10.95000000</numAmount>
</detail>
<detail>
<txtPartNum>11198262A</txtPartNum>
<txtDescription>Fuel Injector Seal Set</txtDescription>
<numQty>1</numQty>
<numUnitPrice>5.95000000</numUnitPrice>
<numAmount>5.95000000</numAmount>
</detail>
</details>
<commentsHeader xfa:dataNode="dataGroup"/>
<footer xfa:dataNode="dataGroup"/>
</form1>
</xfa:data>
</xfa:datasets>
<pdf href="Purchase Order.pdf" xmlns="http://ns.adobe.com/xdp/pdf/"/>
</xdp:xdp>