Sample code for 30+ languages & platforms
SQL Server

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 SQL Server Downloads

SQL Server
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    --  The XML invoice is shown at the bottom of this example.
    DECLARE @xml int
    EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @xml, 'LoadXmlFile', @success OUT, 'qa_data/xml/fatture_invoice.xml'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @xml, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @xml
        RETURN
      END

    --  Get the Base64 PDF content.
    DECLARE @sb int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT

    EXEC sp_OAMethod @xml, 'GetChildContentSb', @success OUT, 'FatturaElettronicaBody|Allegati|Attachment', @sb
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @xml, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @xml
        EXEC @hr = sp_OADestroy @sb
        RETURN
      END

    --  Decode the base64
    DECLARE @bd int
    EXEC @hr = sp_OACreate 'Chilkat.BinData', @bd OUT

    EXEC sp_OAMethod @bd, 'AppendEncodedSb', @success OUT, @sb, 'base64'

    --  Save to a PDF file.
    EXEC sp_OAMethod @bd, 'WriteFile', @success OUT, '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>

    EXEC @hr = sp_OADestroy @xml
    EXEC @hr = sp_OADestroy @sb
    EXEC @hr = sp_OADestroy @bd


END
GO