Visual FoxPro
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
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 & 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