Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loXml
LOCAL loSb
LOCAL loBd
lnSuccess = 0
* The XML invoice is shown at the bottom of this example.
loXml = CreateObject('Chilkat.Xml')
lnSuccess = loXml.LoadXmlFile("qa_data/xml/fatture_invoice.xml")
IF (lnSuccess <> 1) THEN
? loXml.LastErrorText
RELEASE loXml
CANCEL
ENDIF
* Get the Base64 PDF content.
loSb = CreateObject('Chilkat.StringBuilder')
lnSuccess = loXml.GetChildContentSb("FatturaElettronicaBody|Allegati|Attachment",loSb)
IF (lnSuccess <> 1) THEN
? loXml.LastErrorText
RELEASE loXml
RELEASE loSb
CANCEL
ENDIF
* Decode the base64
loBd = CreateObject('Chilkat.BinData')
lnSuccess = loBd.AppendEncodedSb(loSb,"base64")
* Save to a PDF file.
lnSuccess = loBd.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>
RELEASE loXml
RELEASE loSb
RELEASE loBd