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.

Xfa Import

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>
Download PDFKit.NET 5.0
We will send you a download link
  • This field is for validation purposes and should be left unchanged.
Why do we ask your email address?
We send tips that speed up your evaluation
We let you know about bug fixes
You can always unsubscribe with one click
We never share your address with a 3rd party
Thank you for your download

We have sent an email with a download link.