Sample code for 30+ languages & platforms
Lua

Extract PDF Invoice from FatturaElettronica XML

See more XML Examples

Demonstrates how to extract a PDF attachment from an XML invoice (fattura elettronica) -- ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- The XML invoice is shown at the bottom of this example.
local xml = chilkat.Xml.new()
local success = xml:load_xml_file("qa_data/xml/fatture_invoice.xml")
if not success then
    print(xml.last_error_text)
    return
end

-- Get the Base64 PDF content.
local sb = chilkat.StringBuilder.new()
success = xml:get_child_content_sb("FatturaElettronicaBody|Allegati|Attachment", sb)
if not success then
    print(xml.last_error_text)
    return
end

-- Decode the base64
local bd = chilkat.BinData.new()
success = bd:append_encoded_sb(sb, "base64")

-- Save to a PDF file.
success = bd:write_file("qa_output/fattura.pdf")

-- This is the XML invoice loaded from fatture_invoice.xml
-- It is populated with junk information.

-- <?xml version="1.0" encoding="utf-8"?>
-- <nr1:FatturaElettronica versione="FPR12" xmlns:nr1="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2">
--     <FatturaElettronicaHeader>
--         <DatiTrasmissione>
--             <IdTrasmittente>
--                 <IdPaese>IT</IdPaese>
--                 <IdCodice>9999999999</IdCodice>
--             </IdTrasmittente>
--             <ProgressivoInvio>01E99</ProgressivoInvio>
--             <FormatoTrasmissione>FPR99</FormatoTrasmissione>
--             <CodiceDestinatario>0000000</CodiceDestinatario>
--             <PECDestinatario>fatture.elettroniche@pec.something.it</PECDestinatario>
--         </DatiTrasmissione>
--         <CedentePrestatore>
--             <DatiAnagrafici>
--                 <IdFiscaleIVA>
--                     <IdPaese>IT</IdPaese>
--                     <IdCodice>9999999999</IdCodice>
--                 </IdFiscaleIVA>
--                 <CodiceFiscale>9999999999</CodiceFiscale>
--                 <Anagrafica>
--                     <Denominazione>Chilkat S.p.A.</Denominazione>
--                 </Anagrafica>
--                 <RegimeFiscale>RF01</RegimeFiscale>
--             </DatiAnagrafici>
--             <Sede>
--                 <Indirizzo>Via Xyzabcde, 99/2</Indirizzo>
--                 <CAP>40127</CAP>
--                 <Comune>Bologna</Comune>
--                 <Provincia>BO</Provincia>
--                 <Nazione>IT</Nazione>
--             </Sede>
--             <IscrizioneREA>
--                 <Ufficio>BO</Ufficio>
--                 <NumeroREA>9999999</NumeroREA>
--                 <CapitaleSociale>9999999999.00</CapitaleSociale>
--                 <SocioUnico>SM</SocioUnico>
--                 <StatoLiquidazione>LN</StatoLiquidazione>
--             </IscrizioneREA>
--         </CedentePrestatore>
--         <CessionarioCommittente>
--             <DatiAnagrafici>
--                 <IdFiscaleIVA>
--                     <IdPaese>IT</IdPaese>
--                     <IdCodice>9999999999</IdCodice>
--                 </IdFiscaleIVA>
--                 <Anagrafica>
--                     <Denominazione>GRUPPO ABCDEF SRL</Denominazione>
--                 </Anagrafica>
--             </DatiAnagrafici>
--             <Sede>
--                 <Indirizzo>VIALE ABCDEF 1</Indirizzo>
--                 <CAP>73010</CAP>
--                 <Comune>XYZ</Comune>
--                 <Provincia>LE</Provincia>
--                 <Nazione>IT</Nazione>
--             </Sede>
--         </CessionarioCommittente>
--     </FatturaElettronicaHeader>
--     <FatturaElettronicaBody>
--         <DatiGenerali>
--             <DatiGeneraliDocumento>
--                 <TipoDocumento>ABC04</TipoDocumento>
--                 <Divisa>EUR</Divisa>
--                 <Data>2018-12-31</Data>
--                 <Numero>9999999999</Numero>
--                 <ImportoTotaleDocumento>354.71</ImportoTotaleDocumento>
--                 <Causale>RIFERIMENTO TICKET 999999</Causale>
--                 <Causale>FATTURA NR. 9999999999 DEL 30.09.2018</Causale>
--                 <Causale>DIFFERENZA PREZZO</Causale>
--                 <Causale>RIF. FORN. ABCDEF clam</Causale>
--                 <Causale>RIF. CLIENTE: ABCDEF</Causale>
--                 <Causale>XYZ - ABCDEF</Causale>
--                 <Causale>Assolve gli obblighi di ... in L.27/2012</Causale>
--                 <Causale>Contributo ambientale ABCDEF assolto</Causale>
--             </DatiGeneraliDocumento>
--             <DatiFattureCollegate>
--                 <IdDocumento>9999999999</IdDocumento>
--                 <Data>2018-09-30</Data>
--             </DatiFattureCollegate>
--         </DatiGenerali>
--         <DatiBeniServizi>
--             <DettaglioLinee>
--                 <NumeroLinea>1</NumeroLinea>
--                 <CodiceArticolo>
--                     <CodiceTipo>Codice Art. ABC</CodiceTipo>
--                     <CodiceValore>9999999999</CodiceValore>
--                 </CodiceArticolo>
--                 <CodiceArticolo>
--                     <CodiceTipo>EAN</CodiceTipo>
--                     <CodiceValore>9999999999</CodiceValore>
--                 </CodiceArticolo>
--                 <Descrizione>ABC 123 XY</Descrizione>
--                 <Quantita>1.00</Quantita>
--                 <UnitaMisura>NR</UnitaMisura>
--                 <PrezzoUnitario>72.57000000</PrezzoUnitario>
--                 <PrezzoTotale>72.57</PrezzoTotale>
--                 <AliquotaIVA>4.00</AliquotaIVA>
--                 <AltriDatiGestionali>
--                     <TipoDato>DP</TipoDato>
--                     <RiferimentoTesto>999999999 GRUPPO BLAH BLAH BLAH PL(LE)</RiferimentoTesto>
--                 </AltriDatiGestionali>
--             </DettaglioLinee>
--             <DettaglioLinee>
--                 <NumeroLinea>2</NumeroLinea>
--                 <CodiceArticolo>
--                     <CodiceTipo>Codice Art. ABCDEF</CodiceTipo>
--                     <CodiceValore>9999999999</CodiceValore>
--                 </CodiceArticolo>
--                 <CodiceArticolo>
--                     <CodiceTipo>EAN</CodiceTipo>
--                     <CodiceValore>9999999999</CodiceValore>
--                 </CodiceArticolo>
--                 <Descrizione>ABCDEF XYZ MID</Descrizione>
--                 <Quantita>1.00</Quantita>
--                 <UnitaMisura>NR</UnitaMisura>
--                 <PrezzoUnitario>268.50000000</PrezzoUnitario>
--                 <PrezzoTotale>268.50</PrezzoTotale>
--                 <AliquotaIVA>4.00</AliquotaIVA>
--                 <AltriDatiGestionali>
--                     <TipoDato>DP</TipoDato>
--                     <RiferimentoTesto>999999999 GRUPPO BLAH BLAH BLAH PL(LE)</RiferimentoTesto>
--                 </AltriDatiGestionali>
--             </DettaglioLinee>
--             <DatiRiepilogo>
--                 <AliquotaIVA>4.00</AliquotaIVA>
--                 <Arrotondamento>0.00</Arrotondamento>
--                 <ImponibileImporto>341.07</ImponibileImporto>
--                 <Imposta>13.64</Imposta>
--                 <EsigibilitaIVA>I</EsigibilitaIVA>
--             </DatiRiepilogo>
--         </DatiBeniServizi>
--         <DatiPagamento>
--             <CondizioniPagamento>XX02</CondizioniPagamento>
--             <DettaglioPagamento>
--                 <ModalitaPagamento>XX05</ModalitaPagamento>
--                 <DataScadenzaPagamento>2018-11-30</DataScadenzaPagamento>
--                 <ImportoPagamento>354.71</ImportoPagamento>
--             </DettaglioPagamento>
--         </DatiPagamento>
--         <Allegati>
--             <NomeAttachment>9999_2018_2130009999.pdf</NomeAttachment>
--             <FormatoAttachment>pdf</FormatoAttachment>
--             <DescrizioneAttachment>In allegato documento non valido ai fini fiscali</DescrizioneAttachment>
--             <Attachment>JVBERi0xLjMNCiXi48/TDQoyIDAgb ...
-- ... BASE64 PDF DATA HERE ...
-- ... BASE64 PDF DATA HERE ...
-- ... BASE64 PDF DATA HERE ...
-- ... BASE64 PDF DATA HERE ...
-- ... BASE64 PDF DATA HERE ...
-- ... BASE64 PDF DATA HERE ...
-- AAAAAAAAAAAAAAAAAAA=</Attachment>
--         </Allegati>
--     </FatturaElettronicaBody>
-- </nr1:FatturaElettronica>