Estrazione di file PDF/A3

Tradotto automaticamente da Deepl

Nei post precedenti abbiamo esplorato l’incorporazione di documenti all’interno di file PDF/A-3 utilizzando 4D Write Pro, compresa la generazione di fatture elettroniche. Poiché la fatturazione elettronica diventa obbligatoria in vari paesi europei, come Francia e Germania, la capacità di estrarre i file XML incorporati da questi PDF sta diventando fondamentale. Ma l’utilità di PDF/A-3 si estende oltre le fatture; questi file possono incorporare vari tipi di documenti che possono richiedere l’estrazione.

Mentre strumenti come Adobe Acrobat Reader offrono l’estrazione manuale, questo post introduce un metodo efficiente e automatizzato che utilizza 4D 20 R6 per gestire facilmente il processo.

HDI: estrazione di file PDF/A3

Un componente dedicato

È stato sviluppato un componente dedicato che consente di estrarre tutti i file allegati (in memoria) e di gestirli nel modo desiderato. Ad esempio, un file XML può essere analizzato direttamente in un albero DOM, mentre un file di immagini può essere salvato su disco, ecc.

GESTORE DI COMPONENTI

Questo componente può essere installato facilmente grazie al gestore di componenti, davvero semplice da usare e parte integrante di 4D 20 R6. È sufficiente creare un file dependencies.json all’interno della cartella Sources e digitare queste semplici righe. Il componente verrà installato non appena il progetto verrà avviato. L’HDI fornito si basa su questo meccanismo.

{
"dependencies":
 {
  "4D-QPDF":
  {
  "github": "4d/4D-QPDF",
  "version":"*"
  }
 }
}

Estrazione

Un singolo metodo del componente consente di ottenere l’elenco e il contenuto dei documenti inclusi in un file PDF.

$colAttachments:=PDF Get attachments ($PDFfile)

Questo metodo restituisce una collezione contenente oggetti, ognuno dei quali descrive e contiene un allegato.

Essi conterranno attributi come name, extension, fullName, mimeType, content, ecc.

    $path:="/DATA/TestPDFs/ManyEnclosures.pdf"
    $PDFfile:=File($path; fk posix path)
    Form.attachments:=PDF Get attachments($PDFfile)

    Naturalmente, nel caso delle fatture elettroniche si può andare direttamente all’elemento xml incluso!

    $XMLattachments:=PDF Get attachments($file).query("mimeType = :1"; "text/xml")
    If ($XMLattachments.length#0)
    	$xml:=BLOB to text($XMLattachments[0].content; UTF8 text without length)
    	$dom:=DOM Parse XML variable($xml)
    End if 

    La documentazione del componente su github descrive in dettaglio altre funzioni (controllo, aggiornamento, ecc.).

    Un esempio di dialogo di estrazione

    L’HDI fornito dimostra come visualizzare gli allegati in una casella di riepilogo in base alla raccolta restituita.

    Conclusione

    Questo componente, il cui codice sorgente è disponibile su GitHub, sfrutta la libreria QPDF (una soluzione open source disponibile gratuitamente qui) per fornire un metodo affidabile per estrarre gli allegati dai file PDF/A-3 all’interno delle applicazioni 4D. È pronto all’uso tramite il gestore di componenti, con la possibilità di personalizzarlo in base alle proprie esigenze o all’evoluzione della libreria QPDF.

    Roland Lannuzel
    - Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.