Sample code for 30+ languages & platforms
PHP

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

Chilkat2 PHP
<?php

use Chilkat2\BinData;
use Chilkat2\StringBuilder;
use Chilkat2\Xml;

// The XML invoice is shown at the bottom of this example.
$xml = new Xml();
try {
    $xml->LoadXmlFile('qa_data/xml/fatture_invoice.xml');

    // Get the Base64 PDF content.
    $sb = new StringBuilder();
    $xml->GetChildContentSb('FatturaElettronicaBody|Allegati|Attachment', $sb);
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

// Decode the base64
$bd = new BinData();
$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>
 */