ZUGFeRD konforme PDF Rechnungen drucken / PDF Drucker
Wie sie ZUGFeRD konforme PDF Rechnungen (Frankreich Factur-X) mit unserem PDF Drucker erzeugen können, zeigen wir ihnen in diesem Kapitel unseres Handbuchs.
Die Kernanwendung ist wie immer unser PDF Drucker, denn als Grundlage für ZUGFeRD konforme PDF Dokumente bietet er die Erzeugung von PDF/A-1b Dateien an. Diese PDF Spezifikation ist die Basis dafür um an PDF Dokumente weitere Dateien, im Falle von ZUGFeRD sind es XML Dateien, anfügen zu können.
Voraussetzung ist, das ihre Warenwirtschaft das benötigte ZUGFeRD XML als Datei in einem definierten Ordner bereitstellt. Die meisten Warenwirtschaften werden diese Möglichkeit bereitstellen können, andernfalls wenden sie sich an ihren ERP/WaWi Hersteller denn ZUGFeRD PDF Rechnungen werden ab 2025 gesetzlich verpflichtend im B2B Bereich.
7-PDF Printer und Mustang-CLI-2.3.3.jar
Dabei läuft das Anfügen von sogenannten XML Rechnungen (eInvoices) an PDF Dateien wie folgt ab: 7-PDF Printer druckt zuerst das dafür nötige PDF/A-1b Dokument im PDF Format 1.7, und mit Mustang-CLI-2.3.3.jar
, eine auf Java basierte Library (OpenSource / unterliegt der Apache Lizenz) zur Erzeugung von ZUGFeRD konformen Daten und PDF Dateien, fügen wir die gewünschten XML Rechnungsdatei dem PDF als Anhang an. Das JAR Archiv kann als Konsolenanwendung genutzt werden. Genau diese Möglichkeit werden wir uns zu Nutze machen. Mit dem VBScript Framework des 7-PDF Printers programmieren wir, ein wenige Zeilen umfassendes Macro, das Mustang-CLI-2.3.3.jar
per Konsolenbefehl automatisiert ausführt.
WICHTIG: Bitte nutzen sie für das Nachvollziehen dieses Beispiels ausschließlich die Version 2.3.3 des Mustang JAR Archivs, da sich in den neueren Versionen wieder einmal die Aufrufparameter geändert haben. Die neuen Mustang Versionen sind aber für die funktionale Basis um ZUGFeRD PDF zu erzeugen nicht nötig, können aber verwendet werden. Dazu müsste nur das ZUGFeRD.vbs Macro codeseitig leicht angepasst werden. Für dieses Beispiel ist das aber nicht nötig!
Der Rechnungsdruck erfolgt in der realen Welt meist in der Regel aus einem ERP System an 7-PDF Printer. Die Druckdaten des ERPs werden wir von 7-PDF Printer auslesen lassen, um über den Extrakt der darin enthaltenen Rechnungsnummer eine passende XML Rechnungsdatei (eInvoice), welche vom ERP System bereitgestellt wurde, automatisiert referenzieren und anfügen zu können. Auch dieser Teil der Programmierung platzieren wir im VBScript Macro. Die notwendigen Steps zu dieser skizzierten Lösung illustrieren wir nun für sie detailliert.
Der nachfolgende Screenshot soll zur reinen Information für sie dienen, und zeigt die möglichen Parameter zur Steuerung des JAR Archives Mustang-CLI-2.3.3.jar
als Konsolenanwendung:
Mustang-CLI in der Windows 11 Eingabeaufforderung.
Alle möglichen Konsolen Parameter und weiteren Infos zum Mustang Projekt und eine Möglichkeit das JAR Archiv Mustang-CLI-2.3.3.jar
kostenlos herunterzuladen, finden sie auf dieser Website.
WICHTIG: Voraussetzung für das erfolgreiche Anfügen von Dateien an PDF Dokumente ist allerdings, das sie eine aktuelle OpenJDK Installation auf ihrem System besitzen. OpenJDK kann von dieser Microsoft Downloadseite kostenlos heruntergeladen und installiert werden (GPL Lizenz). In unserem hier dokumentierten Fall haben wir microsoft-jdk-17.35.1-windows-x64.msi verwendet.
"Mustang-CLI-2.3.3.jar" mit 7-PDF Printer verwenden
Um nun vollautomatisch mit unserem PDF Drucker 7-PDF Printer ZUGFeRD konforme PDF Rechnungen zu drucken, muss die Anwendung Mustang-CLI-2.3.3.jar
zuvor in das Installationsverzeichnis unseres PDF Druckers kopiert werden. Im nachfolgenden Screenshot ist das bereits gemacht worden.
Mustang-CLI-2.3.3.jar
wurde in das Installationsverzeichnis unseres PDF Druckers kopiert.
ZUGFeRD PDF automatisch mit 7-PDF Printer erstellen
Wenn Mustang-CLI-2.3.3.jar
in das Installationsverzeichnis kopiert ist, benötigen wir für eine vollautomatische Erstellung von ZUGFeRD konformen PDF Dateien mit 7-PDF Printer noch das dafür benötigte Macro ZUGFeRD.vbs
.
Sie finden unten in der Downloadtabelle ein ZIP Archiv mit der Benamung PlugIn_ZUGFeRD_7PDF_Printer.zip
das dieses Macro neben weiteren benötigte Dateien zum Testen dieses Kapitels beinhaltet. Wie bei unserem PDF Drucker üblich gehört das Macro ZUGFeRD.vbs
in den Macros Ordner. Kopieren sie also die VBS Datei in dieses Verzeichnis.
ZUGFeRD.vbs Macro muss in den Macros Ordner des 7-PDF Printers platziert werden
Das Macro ruft nach dem Drucken des benötigten PDF/A-1b Dokuments automatisch Mustang-CLI-2.3.3.jar
auf und hängt vollautomatisch die zur Rechnung passende ZUGFeRD konforme XML Rechnungsdatei an das gedruckte PDF.
Die wirklich wichtige Zeile ist die vorletzte Zeile im VB Script Macro. Hier wird Mustang-CLI-2.3.3.jar
vom 7-PDF Printer im Hidden Mode, und allen für das Anfügen der XML Rechnung (eInvoice) nötigen Parametern, aufgerufen. Der Pfad muss ggf. bei älteren Windows Versionen und anderen OpenJDK Installationspfaden auf ihre Systemkonfiguration angepasst werden.
Simulierter Rechnungsdruck
Als Simulationsbeispiel nutzen wir nachfolge Beispielrechnung (unten herunterladbar). Für diesen Test bzw. dieses Beispiel erfolgt der Druck aus Word, normalerweise erfolgt so ein Druck aus einem ERP System bzw. einer Warenwirschaft an 7-PDF Printer.
Beispielrechnung mit rot markierter Rechnungsnummer.
Hinweis: Die Beispielrechnung ist auch als Download unten verfügbar.
Die Rechnungsnummer ist zur reinen Veranschaulichung für sie rot im Rechnungsdokument markiert, denn dieser Teil der Druckdaten extrahiert das oben platzierte Macro ZUGFeRD.vbs
, um die für die Druckdaten passende ZUGFeRD XML Datei, die vom ERP System zuvor unter C:\einvoices
abgelegt wurde, an Mustang-CLI-2.3.3.jar
weiterzugeben damit es das XML an die erzeugte PDF/A-1b Datei anhängt (final wird daraus dann eine PDF/A-3U Datei). Es gibt also in diesem Verzeichnis eine ZUGFeRD konforme XML Datei mit dem Namen 2021-09-1911.xml
Im oben bereits erwähnten ZIP Archiv mit der Benamung PlugIn_ZUGFeRD_7PDF_Printer.zip
(Download über Downloadtabelle unten) finden sie auch ein Verzeichnis einvoices
das es ihnen ermöglichen soll unser hier gezeigtes Beispiel selbst einmal durchspielen zu können.
In diesem Verzeichnis hat das ERP zuvor beispielhaft die XML ZUGFeRD Daten je Rechnung abgelegt. Der Dateiname ist gleich der Rechnungsnummer aus den Druckdaten und wird vom Macro ZUGFeRD.vbs
extrahiert und an Mustang-CLI-2.3.3.jar
weitergegeben.
Simulation starten
Wir halten fest: Mustang-CLI-2.3.3.jar
ist im InstallRoot des installierten 7-PDF Printers, ZUGFeRD.vbs
im Macros
-Verzeichnis, und das Verzeichnis einvoices
ist direkt unter C:\
entpackt. OpenJDK ist installiert und der Pfad ggf. im ZUGFeRD.vbs
auf ihre Systemkonfig angepasst. Dann drucken wir nun zur Simulation aus Word unsere Beispielrechnung auf dem 7-PDF Printer aus.
Wir drucken nun zur Simulation aus Word unsere Beispielrechnung auf dem 7-PDF Printer aus.
Der Druckdialog unseres PDF Druckers wird angezeigt, wir drücken nach Auswahl des Speicherorts für die zu erzeugende PDF/A-1b Datei auf die Schaltfläche "Speichern".
Druckdialog des 7-PDF Printers erscheint
Das Ergebnis
Das Ergebnis ist ein PDF/A-3U Rechnungsdokument mit angehängter ZUGFeRD konformen XML Datei, wie uns der Acrobat Reader von Adobe eindrücklich zeigt.
ZUGFeRD konforme PDF Rechnung im Acrobat Reader
Nur eine spezielle PDF Druckerinstanz soll ZUGFeRD PDF Dokumente drucken
7-PDF Printer unterstützt über den Setup Parameter /PRINTERNAME="[GEWÜNSCHTER PDF DRUCKERNAME]" die Installation mehrerer PDF Druckerinstanzen. Für jede Druckerinstanz können dann unterschiedliche PDF Einstellungen vorgenommen werden. Macros wie ZUGFeRD.vbs
werden allerdings global in den Macros Ordner abgelegt, und gelten eigentlich für jede installierte Druckerinstanz. Im Klartext, die Programmierung wirkt sich also auf jede Druckerinstanz die auf 7-PDF Printer basiert aus.
Man kann aber im VB Script Code die Variable PrinterName (hier im Screenshot ist das Zeile 15) abfragen, und damit den ZUGFeRD.vbs
Code nur für eine spezifische Druckerinstanz vorsehen. In dem Codeschnipsel unten ist es in diesem Falle die Standard PDF Druckerinstanz mit dem bekannten Namen "7-PDF Printer". Hier wurde der gesamte Code einfach in eine VBScript IF
Bedingung geklammert. Das Coding für ZUGFeRD Dokumente wird also nur ausgeführt, wenn über den 7-PDF Printer ein Druck durchgeführt wurde.
ZUGFeRD Dokumente werden nur über die Druckerinstanz 7-PDF Printer erzeugt.
Auf Druckertreiber achten
7-PDF Printer kann neben einer klassischen Installation als Desktopanwendung bzw. einer lokalen PDF Druckerinstallation (Standard) auch als zentraler PDF Netzwerkdrucker installiert werden. Der Installationsparameter ist hierfür /SHARE
.
Nach einer Installation als PDF Netzwerkdrucker, könnte es für die Erstellung von ZUGFeRD PDF Dokumenten nötig sein, den nach der Installation ausgewählten Druckertreiber auf 7-PDF Printer, wie im nachfolgenden Screenshot zu sehen ist, umzustellen. Zwecks höherer Kompatibilität wird ggf. ein Postscript Treiber des Betriebssystems genutzt. Im Falle von ZUGFeRD benötigen wir aber direkten Zugriff auf Druckdaten, und dies ist nur möglich wenn die PDF Netzwerkdrucker Instanz (im Screenshot "PDF-EXP-Prt") unter dem Druckertreiber "7-PDF Printer" betrieben wird. Man sollte also hier einen Blick drauf haben, das die Druckerinstanz auch den richtigen Druckertreiber verwendet.
Für ZUGFeRD muss der richtige Treiber 7-PDF Printer verwendet werden!
Hinweis: Sie müssen ab Windows 10 vor einer Treiberumstellung die Druckerfreigabe temporär für die Zeit der Treiberumstellung deaktivieren, sonst erhalten sie eine Betriebssystem Fehlermeldung.
Fazit
Das hier aufgeführte Simulationsbeispiel extrahiert Druckinformationen über die mitgelieferte Macroprogrammierung ZUGFeRD.vbs
. Die hinterlegte Programmierung erwartet ein Layout das der Rechnungsbeispieldatei aus Word entspricht.
Für ihre Anforderungen müsste also das Macro ZUGFeRD.vbs
ggf. angepasst werden. Mit ein wenig VB Script oder Programmierkenntnissen unter Visual Basic, lässt sich die hier mitgelieferte Programmierung recht flott selbst anpassen. Sollten sie keine Programmiererfahrungen haben, so bieten wir hier auch entsprechendes KnowHow an. Kontaktieren sie uns einfach am Besten per Supportformular, wir helfen ihnen gern und versuchen ihre Anforderungen zu realisieren.
Unterstützte ZUGFeRD Versionen und Factur-X 1.0
Mustang-CLI-2.3.3.jar
unterstützt das Anhängen bereits ZUGFeRD konformer XML Dokumente der EU-Norm von EN 16931. Darunter fallen neben der ZUGFeRD Versionen 1.0, 2.0, 2.1 auch Factur-X 1.0 (Frankreich). Die Abkürzung ZUGFeRD steht für die Spezifikation "Zentraler User Guide des Forums elektronische Rechnung Deutschland" und ist ein Format für den Austausch elektronischer Rechnungsdokumente.Zugfert PDF
Downloads
Anhang | Größe |
---|---|
PlugIn_ZUGFeRD_7PDF_Printer.zip | 7.93 KB |
Mustang-CLI v2.3.3 FREE (external Download; under Apache License) | 33.81 MB |
Microsoft OpenJDK Binaries FREE (external Download; under GPL) | ca. 160 MB |
Rechnungsbeispiel.doc.zip | 24.31 KB |
invoiceexample.doc.zip | 24.71 KB |