|
|
(JavaScript) Extract PDF Invoice from FatturaElettronica XML
Demonstrates how to extract a PDF attachment from an XML invoice (fattura elettronica) -- ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2
var success = false;
// The XML invoice is shown at the bottom of this example.
var xml = new CkXml();
success = xml.LoadXmlFile("qa_data/xml/fatture_invoice.xml");
if (success !== true) {
console.log(xml.LastErrorText);
return;
}
// Get the Base64 PDF content.
var sb = new CkStringBuilder();
success = xml.GetChildContentSb("FatturaElettronicaBody|Allegati|Attachment",sb);
if (success !== true) {
console.log(xml.LastErrorText);
return;
}
// Decode the base64
var bd = new CkBinData();
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>
|