ich habe ein Beispielprojekt erstellt, mit dem ich eine ZUGFeRD-Rechnung mit Lazarus erstellen kann.
Für den PDF-Export muß
- pack_powerpdf eingebunden werden. Außerdem muß das Verzeichnis
<lazarus-Verzeichnis>\components\lazreport\source\addons\pdfexport\
in den Pfad eingebunden werden. Dort befindet sich die Datei lr_e_pdf.pas, die für den PDF-Export aus Lazreport zuständig ist.
(Keine Ahnung, warum sich diese Datei nicht im Package lazreport befindet. lr_e_csv.pas für den csv-Export, lr_e_htm.pas für den html-Export sind drin...)
Für die Zusammenführung von pdf und xml-Datei nutze ich ein externes Postscript-Script, welches jeder Ghostscript-Installation beiliegt.
Außerdem steht im Hintergrund eine Firebird-Datenbank.
Für beide Sachen habe ich die entsprechenden Dateien dem Projekt beigefügt, so das das Projekt unter Windows 64bit direkt lauffähig sein müsste.
Unter Linux sollten die Laufzeitkomponenten von Firebird und Ghostscript ausgetauscht werden.
externe Dateien:
Code: Alles auswählen
# Ghostscript-Runtime 64-bit
gswin64.exe - Ghostscript
gsdll64.dll - Ghostscript dll
COPYING - Ghostscript-Lizenz
# Firebird 4-Runtime 64-bit
fbclient.dll - Firebird-Client
ib_util.dll - Firebird
IDPLicense.txt - Firebird-Lizenz
plugins
plugins\engine13.dll
i) der PDF-Export
via TfrReport.ExportTo()
- erstellt die Datei invoice.pdf, eine Standard-PDF-Datei mit den visuellen Komponenten
ii) der xml-Export
manuelle Erstellung der xml-Datei mittels TXMLDocument und TDOMNode
(man könnte auch writeln(f, '') nehmen, aber TXMLDocument nimmt etwas Kontrolle ab.
- erstellt die Datei factur-x.xml mit den Rechnungsdaten, die in der PDF eingebettet wird.
iii) Ghostscript-Batch
die Zusammenführung pdf und xml; Erstellung einer PDF/A3-Datei nach dem ZUGFeRD-Standard
- hierzu wird die externe Komponente aus dem Ghostscript-Projekt genutzt.
Im Projekt eingebunden werden dazu
- gs-create.bat - Batchdatei mit Ghostscript-Aufruf
- zugferd.ps - das eigentliche Postscript-Script
- srgb.icc - icc-Profil für die pdf/A3-Datei
iv) Optional: Outlook/TB-Versand
Versand der ZUGFeRD-Rechnung per eMail.
- für die Mailerstellung muß Synapse in den ProjektPfad eingetragen werden: <synapse-Verzeichnis>\source\lib\
- hierzu wird mittels Ararat-Synapse eine eMail erstellt. Diese wird aber nicht versandt, sondern als eml-Datei gespeichert.
- Ein Aufruf dieser eml-Datei mit OpenDocument() startet dabei den aktuellen eMail-Client.
(getestet mit Thunderbird, Betterbird, Outlook 2013-2022 Classic)
Das "neue Outlook"

die beiden notwendigen Ghostscript-Dateien konnte ich aufgrund der Größe nicht hochladen und habe sie gezippt:
http://klostersch.de/daten/lazarus-foru ... pt-Win.zip
hier das Original:
Ghostscript: https://ghostscript.com/releases/gsdnld.html