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.

7-PDF Printer und Mustang-CLI-x.x.x.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-x.x.x.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-x.x.x.jar per Konsolenbefehl automatisiert ausführt.

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-x.x.x.jar als Konsolenanwendung:

Mustang-CLI in der Windows 11 Eingabeaufforderung
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-x.x.x.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-x.x.x.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-x.x.x.jar zuvor in das Installationsverzeichnis unseres PDF Druckers kopiert werden. Im nachfolgenden Screenshot ist das bereits gemacht worden.

Mustang-CLI-x.x.x.jar wurde in das Installationsverzeichnis unseres PDF Druckers kopiert.
Mustang-CLI-x.x.x.jar wurde in das Installationsverzeichnis unseres PDF Druckers kopiert.

ZUGFeRD PDF automatisch mit 7-PDF Printer erstellen

Wenn Mustang-CLI-x.x.x.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
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-x.x.x.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.
Die wirklich wichtige Zeile ist die vorletzte Zeile im VB Script Macro. Hier wird Mustang-CLI-x.x.x.jarvom 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
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-x.x.x.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-x.x.x.jar weitergegeben.

Simulation starten

Wir halten fest: Mustang-CLI-x.x.x.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.

Beispielrechnung drucken
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
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
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 konforme PDF Rechnung im Acrobat Reader
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 verwendet werden!
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-x.x.x.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.

Top