Sample code for 30+ languages & platforms
AutoIt

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

AutoIt
Local $bSuccess = 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>

$oXml = ObjCreate("Chilkat.Xml")

$bSuccess = $oXml.LoadXmlFile("c:/temp/example.xml")
If ($bSuccess = False) Then
    ConsoleWrite($oXml.LastErrorText & @CRLF)
    Exit
EndIf

Local $sPdfFilename = $oXml.GetChildContent("GLTransactions|GLTransaction|Document|Attachments|Attachment|Name")
If ($oXml.LastMethodSuccess = False) Then
    ConsoleWrite("No XML element at the given path." & @CRLF)
    Exit
EndIf

ConsoleWrite("PDF Filename = " & $sPdfFilename & @CRLF)

Local $oBinaryDataElem = $oXml.GetChildWithTag("GLTransactions|GLTransaction|Document|Attachments|Attachment|BinaryData")
If ($oXml.LastMethodSuccess = False) Then
    ConsoleWrite("No XML element at the given path." & @CRLF)
    Exit
EndIf

;  Decode the base64 data and save to a file.
$bSuccess = $oBinaryDataElem.SaveBinaryContent($sPdfFilename,False,False,"")
If ($bSuccess = False) Then
    ConsoleWrite($oBinaryDataElem.LastErrorText & @CRLF)
Else
    ConsoleWrite("Success." & @CRLF)
EndIf