Sample code for 30+ languages & platforms
Dart

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

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // The XML invoice is shown at the bottom of this example.
  final xml = CkXml();
  try {
    xml.loadXmlFile('qa_data/xml/fatture_invoice.xml');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Get the Base64 PDF content.
  final sb = CkStringBuilder();
  try {
    xml.getChildContentSb('FatturaElettronicaBody|Allegati|Attachment', sb);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Decode the base64
  final bd = CkBinData();
  bd.appendEncodedSb(sb, 'base64');

  // Save to a PDF file.
  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>
}