Extrakce souborů PDF/A3

Automaticky přeloženo z Deepl

V předchozích příspěvcích jsme se zabývali vkládáním dokumentů do souborů PDF/A-3 pomocí aplikace 4D Write Pro, včetně generování elektronických faktur. Vzhledem k tomu, že elektronická fakturace se stává povinnou v různých evropských zemích, například ve Francii a Německu, stává se schopnost extrahovat vložené soubory XML z těchto souborů PDF klíčovou. Využitelnost souborů PDF/A-3 však přesahuje rámec faktur; tyto soubory mohou obsahovat různé typy dokumentů, které mohou vyžadovat extrakci.

Zatímco nástroje jako Adobe Acrobat Reader nabízejí ruční extrakci, tento příspěvek představuje efektivní, automatizovanou metodu využívající 4D 20 R6, která tento proces snadno zvládne.

HDI: Extrakce souborů PDF/A3

Specializovaná komponenta

Byla vyvinuta specializovaná komponenta, která umožňuje extrahovat všechny soubory příloh (v paměti) a po provedení je spravovat tak, jak potřebujete. Například soubor XML lze analyzovat přímo do stromu DOM, zatímco soubor s obrázkem lze uložit na disk atd.

SPRÁVCE KOMPONENT

Tuto komponentu lze snadno nainstalovat díky správci komponent, který je opravdu jednoduchý na používání a je součástí 4D 20 R6. Stačí vytvořit soubor dependencies.json uvnitř složky Sources a zadat do něj tyto jednoduché řádky. Komponenta se nainstaluje ihned po spuštění vašeho projektu. Dodávané HDI je založeno na tomto mechanismu.

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

Extrakce

Jediná metoda z komponenty vám umožní získat seznam a obsah zahrnutých dokumentů uvnitř souboru PDF.

$colAttachments:=PDF Get attachments ($PDFfile)

Tato metoda vrací kolekci obsahující objekty, z nichž každý popisuje a obsahuje přílohu.

Budou obsahovat atributy jako name, extension, fullName, mimeType, content, atd. plně popsané v HDI a v dokumentaci komponenty.

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

    Nebo samozřejmě v případě elektronických faktur můžete přejít přímo na přiložený xml prvek !

    $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 

    Další funkce (kontrola, aktualizace atd.) jsou podrobně popsány v dokumentaci komponenty na githubu.

    Příklad dialogového okna pro výběr

    Dodané HDI ukáže, jak na základě vrácené kolekce zobrazit přílohy v listboxu.

    Závěr

    Tato komponenta, jejíž zdrojový kód je k dispozici na serveru GitHub, využívá knihovnu QPDF (open-source řešení volně dostupné zde) a poskytuje spolehlivou metodu pro extrakci příloh ze souborů PDF/A-3 v rámci vašich aplikací 4D. Je připraven k použití ihned po vybalení ze skříně prostřednictvím správce komponent s možností přizpůsobení podle toho, jak rostou vaše potřeby nebo se vyvíjí knihovna QPDF.

    Roland Lannuzel
    - Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.