Tcl
Tcl
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 Tcl Downloads
load ./chilkat.dll
set success 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>
set xml [new_CkXml]
set success [CkXml_LoadXmlFile $xml "c:/temp/example.xml"]
if {$success == 0} then {
puts [CkXml_lastErrorText $xml]
delete_CkXml $xml
exit
}
set pdfFilename [CkXml_getChildContent $xml "GLTransactions|GLTransaction|Document|Attachments|Attachment|Name"]
if {[CkXml_get_LastMethodSuccess $xml] == 0} then {
puts "No XML element at the given path."
delete_CkXml $xml
exit
}
puts "PDF Filename = $pdfFilename"
# binaryDataElem is a CkXml
set binaryDataElem [CkXml_GetChildWithTag $xml "GLTransactions|GLTransaction|Document|Attachments|Attachment|BinaryData"]
if {[CkXml_get_LastMethodSuccess $xml] == 0} then {
puts "No XML element at the given path."
delete_CkXml $xml
exit
}
# Decode the base64 data and save to a file.
set success [CkXml_SaveBinaryContent $binaryDataElem $pdfFilename 0 0 ""]
if {$success == 0} then {
puts [CkXml_lastErrorText $binaryDataElem]
} else {
puts "Success."
}
delete_CkXml $binaryDataElem
delete_CkXml $xml