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