Sample code for 30+ languages & platforms
PHP Extension

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

PHP Extension
<?php

include("chilkat.php");

$success = false;

// The XML invoice is shown at the bottom of this example.
$xml = new CkXml();
$success = $xml->LoadXmlFile('qa_data/xml/fatture_invoice.xml');
if ($success != true) {
    print $xml->lastErrorText() . "\n";
    exit;
}

// Get the Base64 PDF content.
$sb = new CkStringBuilder();
$success = $xml->GetChildContentSb('FatturaElettronicaBody|Allegati|Attachment',$sb);
if ($success != true) {
    print $xml->lastErrorText() . "\n";
    exit;
}

// Decode the base64
$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>

?>