[gelöst] ZUGFeRD PDF xml extrahieren
- KoBraSoft
- Beiträge: 125
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
[gelöst] ZUGFeRD PDF xml extrahieren
Hallo,
ich will aus ZUGFeRD PDF Dateien die enthaltenen Daten (xml) extrahieren.
Es gab schon mal eine Diskussion viewtopic.php?p=94917#p94917 zum Thema ZUGFeRD. Brachte aber auch nicht viel erhellendes zum Thema.
Ich habe ein paar Rechnungen mit dem Hex Viewer unter die Lupe genommen und festgestellt dass die XML in die pdf am ende der Datei eingefügt wurde.
Bevor ich jetzt eine Routine schreibe die mir die xml extrahiert wollte ich fragen, ob es mittlerweile so was schon fertig gibt.
Kennt jemand eine Komponente die xml aus pdf extrahiert?
Konrad
ich will aus ZUGFeRD PDF Dateien die enthaltenen Daten (xml) extrahieren.
Es gab schon mal eine Diskussion viewtopic.php?p=94917#p94917 zum Thema ZUGFeRD. Brachte aber auch nicht viel erhellendes zum Thema.
Ich habe ein paar Rechnungen mit dem Hex Viewer unter die Lupe genommen und festgestellt dass die XML in die pdf am ende der Datei eingefügt wurde.
Bevor ich jetzt eine Routine schreibe die mir die xml extrahiert wollte ich fragen, ob es mittlerweile so was schon fertig gibt.
Kennt jemand eine Komponente die xml aus pdf extrahiert?
Konrad
Zuletzt geändert von KoBraSoft am Fr 24. Mai 2024, 12:46, insgesamt 1-mal geändert.
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
- KoBraSoft
- Beiträge: 125
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Re: ZUGFeRD PDF xml extrahieren
Es ist vollbracht 
Ich kann jetzt die ZUGFeRD Daten (mit purem Pascal) aus pdf Rechnungen extrahieren. Besten Dank an rvk https://forum.lazarus.freepascal.org/in ... le;u=55059.
Anbei eine Demo. Diese Demo lässt ich nur mit trunk kompilieren, es hat in fcl-pdf wesentliche Fortschritte gegeben, die die Angelegenheit stark vereinfacht haben.
Verbesserungsvorschläge sind willkommen.
Konrad

Ich kann jetzt die ZUGFeRD Daten (mit purem Pascal) aus pdf Rechnungen extrahieren. Besten Dank an rvk https://forum.lazarus.freepascal.org/in ... le;u=55059.
Anbei eine Demo. Diese Demo lässt ich nur mit trunk kompilieren, es hat in fcl-pdf wesentliche Fortschritte gegeben, die die Angelegenheit stark vereinfacht haben.
Verbesserungsvorschläge sind willkommen.
Konrad
- Dateianhänge
-
Zugferd1.zip
- (305.07 KiB) 111-mal heruntergeladen
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: [gelöst] ZUGFeRD PDF xml extrahieren
ok...
wo liegt die Lösung für denjenigen, der nicht den trunk installieren will?
Das Problem an sich ist für mich interessant, aber noch lange nicht aktuell.
Also erer sowas wie: Die Daten liegen tatsächlich in einer xml im pdf unter ... versteckt; da kann man sie mit dem trunk auslesen.
thx
Joh
wo liegt die Lösung für denjenigen, der nicht den trunk installieren will?
Das Problem an sich ist für mich interessant, aber noch lange nicht aktuell.
Also erer sowas wie: Die Daten liegen tatsächlich in einer xml im pdf unter ... versteckt; da kann man sie mit dem trunk auslesen.
thx
Joh
just my two Beer
- KoBraSoft
- Beiträge: 125
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Re: [gelöst] ZUGFeRD PDF xml extrahieren

Das Beispielprogramm soll keine fertige Lösung sein. Es soll einen Weg zeigen wie es geht und anderen die Suche nach Informationen dazu vereinfachen. Das pdf Format und das ZUGFeRD Format sind gut dokumentiert, aber schwer verständlich (jedenfalls für michJoh hat geschrieben: Fr 24. Mai 2024, 23:12 wo liegt die Lösung für denjenigen, der nicht den trunk installieren will?

Mir fallen spontan drei Möglichkeiten ein. Man kann
- die entsprechenden Dateien von trunk herunterladen und in das eigene Projekt einbunden
- den Quellcode manuell anpassen
- auf die nächste Lazarus Version warten
Ich sehe in freier Wildbahn immer häufiger ZUGFeRD, besonders im B2B Bereich. Für mich war das leider sehr aktuell.Das Problem an sich ist für mich interessant, aber noch lange nicht aktuell.
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: [gelöst] ZUGFeRD PDF xml extrahieren
Nee, so meinte ich das nicht...
Aktuell beschäftige ich mich etwas mit der pdf-Struktur und wollte eigentlich nur wissen, ob die Daten tatsächlich als komprimierte xml in einem Stream steht.
Zugferd ist gerade für mich nur als Idee; aktuell benötige ich nur die XRechnung.
Ich will nur erstmal eine Ahnung haben, wie es realisiert ist.
Aktuell beschäftige ich mich etwas mit der pdf-Struktur und wollte eigentlich nur wissen, ob die Daten tatsächlich als komprimierte xml in einem Stream steht.
Zugferd ist gerade für mich nur als Idee; aktuell benötige ich nur die XRechnung.
Ich will nur erstmal eine Ahnung haben, wie es realisiert ist.
just my two Beer
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: ZUGFeRD PDF xml extrahieren
Aber wie bekomme ich das jetzt ans Laufen?KoBraSoft hat geschrieben: Fr 24. Mai 2024, 12:23 Es ist vollbracht
...
Verbesserungsvorschläge sind willkommen.
Konrad
[Download]
Code: Alles auswählen
uses fppdfobjects, fppdfparser...
Edit: Also ich habe jetzt per fpcUpDeluxe die 3.4 heruntergeladen und hoffte, das die da drin sind.
just my two Beer
- af0815
- Lazarusforum e. V.
- Beiträge: 6855
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ZUGFeRD PDF xml extrahieren
Das sind Teile die in der FCL zu finden sind. fpcsource/packages/fcl-pdf/src aber die Source Pfade sind für Lazarus nicht so relevant, weil die ganze FCL vorkompiliert ist.Joh hat geschrieben: Do 13. Jun 2024, 13:08 Aber wie bekomme ich das jetzt ans Laufen?wo finde ich die Units und wie binde ich die ein?Code: Alles auswählen
uses fppdfobjects, fppdfparser...
alles was mit fp anfängt kann man mal im Sourcezweig vom FPC suchen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- KoBraSoft
- Beiträge: 125
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Re: ZUGFeRD PDF xml extrahieren
https://gitlab.com/freepascal.org/fpc/s ... type=heads > Code > Quellcode herunterladen und in einen Ordner entpacken
In Lazarus Projekt > Projektinspektor > hinzufügen > Dateien hinzufügen
und wenn ich mich recht erinnere, das selbe für
https://gitlab.com/freepascal.org/fpc/s ... ype=heads
Ich hatte auch gehofft, dass das Programm mit 3.4 kompiliert. Tut es aber nicht. Die Leute von fpc sind wohl etwas konservativ mit Übernahme von Code von Trunk in die produktiv Version.Edit: Also ich habe jetzt per fpcUpDeluxe die 3.4 heruntergeladen und hoffte, das die da drin sind.
Der einfachste Weg ist meiner Meinung nach mit fpcUpDeluxe die trunk Version zu installieren. Mit fpcUpDeluxe lassen sich verschiedene Versionen (in getrennten Verzeichnissen) auf einem Rechner nebeneinander betreiben. Ich habe jedenfalls damit gute Erfahrungen gemacht. Lediglich mein Produktivsystem läuft alleine auf einem Rechner.
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: [gelöst] ZUGFeRD PDF xml extrahieren
Ich hab mir dann doch mal die trunk-Version installiert...
Seit Lazarus 2.2.0 ist die gleiche fpc-Version (3.2.2) aktuell... Da hab' ich doch gar nicht drüber nachgedacht.
Mit der Trunc kompiliert es.
Seit Lazarus 2.2.0 ist die gleiche fpc-Version (3.2.2) aktuell... Da hab' ich doch gar nicht drüber nachgedacht.
Mit der Trunc kompiliert es.
just my two Beer
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: ZUGFeRD PDF xml extrahieren
Du gehst in deinem Code davon aus, das die xml komprimiert sein muß...
Meine erste Testdatei ist lt. veraPDF valide aber die xml ist nicht komprimiert.
Die PDF habe ich selbst erstellt, die xml auch und dann zusammengeführt mit Mustang.
ich hab' die pdf mal angehängt:
just my two Beer
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: [gelöst] ZUGFeRD PDF xml extrahieren
und hier nochmal eine valide Datei als Anhang.
Diesmal habe ich die xml mit ghostscript eingefügt.
Interessanterweise wurde die Eingabedatei mit 488452 Bytes und die xml-Datei mit 6185 Bytes als Ausgabe auf 15555 Bytes zusammengeschrumpft.
Ich denke, da wurden unbenutzte Schriften etc. entfernt.
Trotzdem ist die Datei valide, funktioniert aber nicht mit deinem Tool.
wird ersetzt durch
edit: Ausgabedatei ersetzt; ich hatte leider die Datei mit der flaschen PDF/a-Version angehängt...
Diesmal habe ich die xml mit ghostscript eingefügt.
Interessanterweise wurde die Eingabedatei mit 488452 Bytes und die xml-Datei mit 6185 Bytes als Ausgabe auf 15555 Bytes zusammengeschrumpft.
Ich denke, da wurden unbenutzte Schriften etc. entfernt.
Trotzdem ist die Datei valide, funktioniert aber nicht mit deinem Tool.
wird ersetzt durch
edit: Ausgabedatei ersetzt; ich hatte leider die Datei mit der flaschen PDF/a-Version angehängt...
Zuletzt geändert von Joh am Do 20. Jun 2024, 21:57, insgesamt 1-mal geändert.
just my two Beer
- KoBraSoft
- Beiträge: 125
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Re: ZUGFeRD PDF xml extrahieren
Das ist eine gültige pdf, aber deswegen noch keine gültige Zugferddatei. Ich habe bislang noch keine Zugferddatei mit unkomprimierten xml in freier Wildbahn gesehen. Mann müsste sich die Zugferd doku genau durchlesen, was dazu darin steht. Ich habe gerade leider keine Zeit dafür.Joh hat geschrieben: Di 18. Jun 2024, 21:01
Du gehst in deinem Code davon aus, das die xml komprimiert sein muß...
Meine erste Testdatei ist lt. veraPDF valide aber die xml ist nicht komprimiert.
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: [gelöst] ZUGFeRD PDF xml extrahieren
laut der beiden Offline-Validatoren für ZugFerd-PDFs (Mustang und VeraPDF) sind beide Dateien valide ZugFerd-Dateien.
Vielleicht hat hier ja jemand Zugriff auf die kostenpflichtigen Online-Validatoren und könnte beide Dateien mal dort checken.
Vielleicht hat hier ja jemand Zugriff auf die kostenpflichtigen Online-Validatoren und könnte beide Dateien mal dort checken.
just my two Beer
- KoBraSoft
- Beiträge: 125
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Re: [gelöst] ZUGFeRD PDF xml extrahieren
Im examples Verzeichnis von fcl-pdf gibt es (in trunk) das Projekt pdfdump zur Analyse von pdf Dateien.Joh hat geschrieben: Mi 19. Jun 2024, 12:22 und hier nochmal eine valide Datei als Anhang.
invoice.GS.pdf
Code: Alles auswählen
pdfdump -odv invoice.GS.pdf
Code: Alles auswählen
...
Error EPDF examining file "invoice.GS.pdf" : Dictionary entry Font is not a dictionary
Code: Alles auswählen
java -Xmx1G -Dfile.encoding=UTF-8 -jar Mustang-CLI-2.11.0.jar --no-notices --action validate --source invoiceGS.pdf 2>/dev/null
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<validation filename="invoiceGS.pdf" datetime="2024-06-23 09:25:09">
<messages>
<error type="1">File not found</error>
</messages>
<summary status="invalid"/>
</validation>
Dennoch kann mein Programm (ich benutze Linux) die Datei ohne Fehlermeldung lesen
- Dateianhänge
-
- Bildschirmfoto_2024-06-23_09-48-28.png (84.78 KiB) 3828 mal betrachtet
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
-
- Lazarusforum e. V.
- Beiträge: 293
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: [gelöst] ZUGFeRD PDF xml extrahieren
KoBraSoft hat geschrieben: So 23. Jun 2024, 09:40
Mustang Clisagt:Code: Alles auswählen
java -Xmx1G -Dfile.encoding=UTF-8 -jar Mustang-CLI-2.11.0.jar --no-notices --action validate --source invoiceGS.pdf 2>/dev/null
lies doch mal die Fehlermeldung: invoiceGS.pdf: File not foundCode: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?> <validation filename="invoiceGS.pdf" datetime="2024-06-23 09:25:09"> <messages> <error type="1">File not found</error> </messages> <summary status="invalid"/> </validation>
Die Datei heißt: invoice.GS.pdf
just my two Beer