Ruby
Ruby
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.2Chilkat Ruby Downloads
require 'chilkat'
success = false
# The XML invoice is shown at the bottom of this example.
xml = Chilkat::CkXml.new()
success = xml.LoadXmlFile("qa_data/xml/fatture_invoice.xml")
if (success != true)
print xml.lastErrorText() + "\n";
exit
end
# Get the Base64 PDF content.
sb = Chilkat::CkStringBuilder.new()
success = xml.GetChildContentSb("FatturaElettronicaBody|Allegati|Attachment",sb)
if (success != true)
print xml.lastErrorText() + "\n";
exit
end
# Decode the base64
bd = Chilkat::CkBinData.new()
success = bd.AppendEncodedSb(sb,"base64")
# Save to a PDF file.
success = bd.WriteFile("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>