Sample code for 30+ languages & platforms
Lua

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

Lua
local chilkat = require("chilkat")

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

local xml = chilkat.Xml.new()

local success = xml:load_xml_file("c:/temp/example.xml")
if not success then
    print(xml.last_error_text)
    return
end

local pdfFilename = xml:get_child_content("GLTransactions|GLTransaction|Document|Attachments|Attachment|Name")
if not xml.last_method_success then
    print("No XML element at the given path.")
    return
end

print("PDF Filename = " .. pdfFilename)

local binaryDataElem = xml:get_child_with_tag("GLTransactions|GLTransaction|Document|Attachments|Attachment|BinaryData")
if not xml.last_method_success then
    print("No XML element at the given path.")
    return
end

-- Decode the base64 data and save to a file.
success = binaryDataElem:save_binary_content(pdfFilename, false, false, "")
if not success then
    print(binaryDataElem.last_error_text)
else
    print("Success.")
end