Sample code for 30+ languages & platforms
B4X

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 B4X Downloads

B4X
Dim success As Boolean = False

'  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>

Dim xml As ChilkatXml
xml.Initialize

success = xml.LoadXmlFile("c:/temp/example.xml")
If success = False Then
    Log(xml.LastErrorText)
    Return
End If


Dim pdfFilename As String = xml.GetChildContent("GLTransactions|GLTransaction|Document|Attachments|Attachment|Name")
If xml.LastMethodSuccess = False Then
    Log("No XML element at the given path.")
    Return
End If


Log("PDF Filename = " & pdfFilename)

Dim binaryDataElem As ChilkatXml = xml.GetChildWithTag("GLTransactions|GLTransaction|Document|Attachments|Attachment|BinaryData")
If xml.LastMethodSuccess = False Then
    Log("No XML element at the given path.")
    Return
End If


'  Decode the base64 data and save to a file.
success = binaryDataElem.SaveBinaryContent(pdfFilename, False, False, "")
If success = False Then
    Log(binaryDataElem.LastErrorText)
Else
    Log("Success.")
End If