Sample code for 30+ languages & platforms
Visual FoxPro

Extract PDF from General Ledger Transactions XML

See more Office365 Examples

Demonstrates how to extract the base64 data representing a PDF file from a General Ledger Transactions XML.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loXml
LOCAL lcPdfFilename
LOCAL loBinaryDataElem

lnSuccess = 0

*  The General Ledger Transactions XML contains the following:

*  <?xml version="1.0" encoding="utf-8" ?>
*  <eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-XML.xsd">
*      <GLTransactions>
*          <GLTransaction entry="100000095">
*              <TransactionType number="20" />
*              <Journal type="20" code="VK">
*                  <Description termid="90003">Verkopen</Description>
*                  <GLAccount type="20" code="400000" />
*                  <Currency code="EUR" />
*              </Journal>
*              <Date>2022-04-05</Date>
*              <Document>
*                  <Subject>100000095</Subject>
*                  <DocumentType number="10" />
*                  <Account code="0001" status="C" />
*                  <Amount>
*                      <Currency code="EUR" />
*                      <Value>1382.91</Value>
*                  </Amount>
*                  <References>
*                      <InvoiceNumber>100000095</InvoiceNumber>
*                  </References>
*                  <Attachments>
*                      <Attachment>
*                          <Name>F_100000095.PDF</Name>
*                          <BinaryData>BASE64_ENCODED_PDF_BYTES_HERE</BinaryData>
*                      </Attachment>
*                  </Attachments>
*              </Document>
*              <GLTransactionLine type="20" status="20" line="0" linetype="0">
*                  <Date>2022-04-05</Date>
*                  <VATType>S</VATType>
*                  <FinYear number="2022" />
*                  <FinPeriod number="4" />
*                  <GLAccount type="20" code="400000" />
*                  <Description>100000095</Description>
*                  <DueDate>2022-05-05</DueDate>
*                  <Account code="0001" status="C">
*                      <Name>90 Degrees &amp; co</Name>
*                  </Account>
*                  <Amount>
*                      <Currency code="EUR" />
*                      <Value>1382.91</Value>
*                  </Amount>
*                  <ForeignAmount>
*                      <Currency code="EUR" />
*                      <Value>1382.91</Value>
*                      <Rate>1</Rate>
*                  </ForeignAmount>
*                  <References>
*                      <InvoiceNumber>100000095</InvoiceNumber>
*                  </References>
*              </GLTransactionLine>
*              <PaymentTerms>
*                  <PaymentTerm entry="100000095" type="20" line="0" paymentMethod="B">
*                      <Description>20</Description>
*                      <GLAccount type="20" code="400000" />
*                      <Amount>
*                          <Currency code="EUR" />
*                          <Debit>1382.91</Debit>
*                          <Credit>0</Credit>
*                      </Amount>
*                      <ForeignAmount>
*                          <Currency code="EUR" />
*                          <Debit>1382.91</Debit>
*                          <Credit>0</Credit>
*                      </ForeignAmount>
*                      <Reference />
*                      <YourRef />
*                      <InvoiceNumber>100000095</InvoiceNumber>
*                      <InvoiceDate>2022-04-05</InvoiceDate>
*                      <DueDate>2022-05-05</DueDate>
*                      <PaymentDate>2022-05-05</PaymentDate>
*                  </PaymentTerm>
*              </PaymentTerms>
*          </GLTransaction>
*      </GLTransactions>
*  </eExact>

loXml = CreateObject('Chilkat.Xml')

lnSuccess = loXml.LoadXmlFile("c:/temp/example.xml")
IF (lnSuccess = 0) THEN
    ? loXml.LastErrorText
    RELEASE loXml
    CANCEL
ENDIF

lcPdfFilename = loXml.GetChildContent("GLTransactions|GLTransaction|Document|Attachments|Attachment|Name")
IF (loXml.LastMethodSuccess = 0) THEN
    ? "No XML element at the given path."
    RELEASE loXml
    CANCEL
ENDIF

? "PDF Filename = " + lcPdfFilename

loBinaryDataElem = loXml.GetChildWithTag("GLTransactions|GLTransaction|Document|Attachments|Attachment|BinaryData")
IF (loXml.LastMethodSuccess = 0) THEN
    ? "No XML element at the given path."
    RELEASE loXml
    CANCEL
ENDIF

*  Decode the base64 data and save to a file.
lnSuccess = loBinaryDataElem.SaveBinaryContent(lcPdfFilename,0,0,"")
IF (lnSuccess = 0) THEN
    ? loBinaryDataElem.LastErrorText
ELSE
    ? "Success."
ENDIF

RELEASE loBinaryDataElem

RELEASE loXml