Estrarre .xml da .p7m

di il
43 risposte

Estrarre .xml da .p7m

Buongiorno a tutti,

Sarebbe interessante sfruttare i vantaggi dei file .xml per importare poi le fatture dei nostri fornitori, nel database della ditta.

Aprendo con un editor di testo l' xml.p7m di una fattura, mi trovo una parte superiore ed una parte inferiore che riuscirei a tagliare in maniera abbastanza semplice (dovrebbe essere quella relativa alla firma), purtroppo però all'interno di quel che rimane mi si ripetono casualmente dei caratteri strani (EOT, ETX, STX,....) che vanno a "deturpare" il mio documento non permettendomi di estrarlo integralmente.

La mia strategia quindi risulta essere fallimentare.

Esiste un metodo per riuscire a "pulire" il file xml?

PS: abbiamo un database in access, farei tutto tramite routines di VBA.

43 Risposte

  • Re: Estrarre .xml da .p7m

    Ti basta usare openssl.exe
    O, alla peggio, il mio programmello xml2pdf (che in realtà usa sempre openssl, è solo se sei particolarmente pigro)
  • Re: Estrarre .xml da .p7m

    weldox ha scritto:


    Buongiorno a tutti,

    Sarebbe interessante sfruttare i vantaggi dei file .xml per importare poi le fatture dei nostri fornitori, nel database della ditta.

    Aprendo con un editor di testo l' xml.p7m di una fattura, mi trovo una parte superiore ed una parte inferiore che riuscirei a tagliare in maniera abbastanza semplice (dovrebbe essere quella relativa alla firma), purtroppo però all'interno di quel che rimane mi si ripetono casualmente dei caratteri strani (EOT, ETX, STX,....) che vanno a "deturpare" il mio documento non permettendomi di estrarlo integralmente.

    La mia strategia quindi risulta essere fallimentare.

    Esiste un metodo per riuscire a "pulire" il file xml?

    PS: abbiamo un database in access, farei tutto tramite routines di VBA.
    Penso che potresti anche evitare di ripulire il file ".xml.p7"
    La parte superiore e quella inferiore a cui ti riferisci non contengono tag che ti possono interessare per un'importazione.
    Puoi sempre scrivere una routine in VBA che ti va a leggere i nodi che ti interessano.
    Per esempio:
    • "FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdPaese", "FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdCodice" per recuperare la partita iva e il paese;
      "FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Denominazione", per recuperare il nominativo del fornitore, se società, oppure nome e cognome se ditta individuale;
      "FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/Descrizione", per recuperare la descrizione del bene o servizio fatturato;
      etc., etc.
    Proseguendo potrai recuperare tutti gli altri dati.
  • Re: Estrarre .xml da .p7m

    ettore56 ha scritto:


    weldox ha scritto:


    Buongiorno a tutti,

    Sarebbe interessante sfruttare i vantaggi dei file .xml per importare poi le fatture dei nostri fornitori, nel database della ditta.

    Aprendo con un editor di testo l' xml.p7m di una fattura, mi trovo una parte superiore ed una parte inferiore che riuscirei a tagliare in maniera abbastanza semplice (dovrebbe essere quella relativa alla firma), purtroppo però all'interno di quel che rimane mi si ripetono casualmente dei caratteri strani (EOT, ETX, STX,....) che vanno a "deturpare" il mio documento non permettendomi di estrarlo integralmente.

    La mia strategia quindi risulta essere fallimentare.

    Esiste un metodo per riuscire a "pulire" il file xml?

    PS: abbiamo un database in access, farei tutto tramite routines di VBA.
    Penso che potresti anche evitare di ripulire il file ".xml.p7"
    La parte superiore e quella inferiore a cui ti riferisci non contengono tag che ti possono interessare per un'importazione.
    Puoi sempre scrivere una routine in VBA che ti va a leggere i nodi che ti interessano.
    Per esempio:
    • "FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdPaese", "FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdCodice" per recuperare la partita iva e il paese;
      "FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Denominazione", per recuperare il nominativo del fornitore, se società, oppure nome e cognome se ditta individuale;
      "FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/Descrizione", per recuperare la descrizione del bene o servizio fatturato;
      etc., etc.
    Proseguendo potrai recuperare tutti gli altri dati.

    Con vb6 ho estratto tutti i campi per compilare la fattura passiva come pdf e successiva stampa. è una cosa estremamente facile usando un cursore posizionale.
    valutando 10 il tempo per completare la stampa, 2 è quello necessario per estrarre tutti i campi
    se volete vi posto la routine che ho fatto in vb6
  • Re: Estrarre .xml da .p7m

    +m2+ ha scritto:


    Ti basta usare openssl.exe
    O, alla peggio, il mio programmello xml2pdf (che in realtà usa sempre openssl, è solo se sei particolarmente pigro)
    Grazie per la risposta innanzitutto.

    Dovrei integrare il tutto nel gestionale di access, dici che è possibile richiamarlo da vba? Ci dovrei studiare sopra un pochino, sono un po' ignorante in merito...
  • Re: Estrarre .xml da .p7m

    È possibile si lancia da riga di comando.
    come non so, ma ci sono tanti esperti qui
  • Re: Estrarre .xml da .p7m

    Okk!! Grazie!!
  • Re: Estrarre .xml da .p7m

    X Dario e Ettore,

    Corretta l'osservazione che non sarebbe necessario tagliare capo e coda del p7m, il problema è che anche all'interno del corpo ho queste specie di artefatti inseriti in maniera casuale.
    Come se il tipo di firma applicato avesse "cifrato" a suo modo anche il nucleo dell' xml stesso. Non so se mi sono spiegato
  • Re: Estrarre .xml da .p7m

    Utilizzando il modulo Fatturazione Elettronica ho risolto il problema con le seguenti istruzioni in VB NET:
    --------------------------------------------------------------------------
    Imports FatturaElettronica
    Imports FatturaElettronica.Common
    Imports FatturaElettronica.Defaults
    Imports FatturaElettronica.Validators
    Imports FatturaElettronica.FatturaElettronicaHeader.CedentePrestatore
    Imports FatturaElettronica.Extensions
    'Imports System
    Imports System.Xml
    Imports System.IO
    Imports Newtonsoft.Json
    'Imports Org.BouncyCastle.Cms
    
    Module xml04
    
        Sub Main()
            Dim fatturax = Fattura.CreateInstance(Instance.PubblicaAmministrazione)
            Dim fatturaP7M As String = "C:\\ITxxxxxxxxxxx_0SCZO.xml.p7m"
            Dim fatturaXML As String = "C:\ITxxxxxxxxxxx_0SCZO.xml"
            fatturax.ReadXmlSigned(fatturaP7M)  'legge il documento p7m
            fatturax.WriteXml(fatturaXML) 'scrive il documento xml
           End SUB
    End Module
    -----------------------------------------------------------------------------
  • Re: Estrarre .xml da .p7m

    Grazie af50,

    questo modulo dove lo potrei trovare?
  • Re: Estrarre .xml da .p7m

    +m2+ ha scritto:


    È possibile si lancia da riga di comando.
    come non so, ma ci sono tanti esperti qui
    Credo di riuscire a lanciare gli eseguibili tramite shell, quindi da riga di comando.

    Il tuo programmino funziona da riga di comando? O mi consigli di usare direttamente (dovrei studiare come) openssl.exe?

    Grazie mille!

    PS: Ho trovato la discussione dove lo descrivi, credo sia quello che fa al caso mio!!!

    Xml2pdf.exe 4 c:\*.p7m z:\toltefirme
    Toglie le firme digitali CAdES (p7m) da uno o più file in cartella specificata

    Ho provato ed è perfetto...sei magnifico.

    A chi servisse ho proceduto come segue:
    1) Scaricato magnifico programmino di +m2+
    2) Salvato in C:\Program Files (x86)\xml2pdf\
    3) Creato un pulsante e "su click" in cui ho inserito questa semplice riga:

    Call Shell("C:\Program Files (x86)\xml2pdf\Xml2pdf.exe 4 C:\MiaCartellaOrigine\*.p7m C:\MiaCartellaDestinazione")

    Funziona alla perfezione!

    Grazie infinite!
  • Re: Estrarre .xml da .p7m

    weldox ha scritto:


    +m2+ ha scritto:


    È possibile si lancia da riga di comando.
    come non so, ma ci sono tanti esperti qui
    Credo di riuscire a lanciare gli eseguibili tramite shell, quindi da riga di comando.

    Il tuo programmino funziona da riga di comando? O mi consigli di usare direttamente (dovrei studiare come) openssl.exe?

    Grazie mille!

    PS: Ho trovato la discussione dove lo descrivi, credo sia quello che fa al caso mio!!!

    Xml2pdf.exe 4 c:\*.p7m z:\toltefirme
    Toglie le firme digitali CAdES (p7m) da uno o più file in cartella specificata

    Ho provato ed è perfetto...sei magnifico.

    A chi servisse ho proceduto come segue:
    1) Scaricato magnifico programmino di +m2+
    2) Salvato in C:\Program Files (x86)\xml2pdf\
    3) Creato un pulsante e "su click" in cui ho inserito questa semplice riga:

    Call Shell("C:\Program Files (x86)\xml2pdf\Xml2pdf.exe 4 C:\MiaCartellaOrigine\*.p7m C:\MiaCartellaDestinazione")

    Funziona alla perfezione!

    Grazie infinite!
    Personalmente non ti consiglio di metterlo dentro la cartella programmi.
    Ha una gestione "speciale" dei privilegi (da parte di Windows). Usualmente una cartella tipo c:\sticazzi (o anche c:\sticazzi\lamiacartella) è preferibile.

    Le ACL Windows diventano sempre più restrittive (ed inutili)
  • Re: Estrarre .xml da .p7m

    weldox ha scritto:


    Grazie af50,

    questo modulo dove lo potrei trovare?
    In questo stesso forum si fa riferimento a:
    https://github.com/FatturaElettronica/FatturaElettronica.NET


    Da questo sito ho scaricato sia il package FatturaElettronica sia FatturaElettronica.extension.

    Da questo sito ho scaricato il modulo BouncyCastle.Crypto
  • Re: Estrarre .xml da .p7m

    Grazie mille a entrambi!
  • Re: Estrarre .xml da .p7m

    af50 ha scritto:


    Utilizzando il modulo Fatturazione Elettronica ho risolto il problema con le seguenti istruzioni in VB NET:
    --------------------------------------------------------------------------
    Imports FatturaElettronica
    Imports FatturaElettronica.Common
    Imports FatturaElettronica.Defaults
    Imports FatturaElettronica.Validators
    Imports FatturaElettronica.FatturaElettronicaHeader.CedentePrestatore
    Imports FatturaElettronica.Extensions
    'Imports System
    Imports System.Xml
    Imports System.IO
    Imports Newtonsoft.Json
    'Imports Org.BouncyCastle.Cms
    
    Module xml04
    
        Sub Main()
            Dim fatturax = Fattura.CreateInstance(Instance.PubblicaAmministrazione)
            Dim fatturaP7M As String = "C:\\ITxxxxxxxxxxx_0SCZO.xml.p7m"
            Dim fatturaXML As String = "C:\ITxxxxxxxxxxx_0SCZO.xml"
            fatturax.ReadXmlSigned(fatturaP7M)  'legge il documento p7m
            fatturax.WriteXml(fatturaXML) 'scrive il documento xml
           End SUB
    End Module
    -----------------------------------------------------------------------------
    Salve,
    qualcuno ha fatto una routine simile per VB6?
Devi accedere o registrarti per scrivere nel forum
43 risposte