News combit Dev Blog

Unterstützung von ZUGFeRD 2.0 beim PDF-Export

Veröffentlicht: Montag, 21. Oktober 2019 | 2 Kommentar(e)
 
Bisher wurde das elektronische Rechnungsdatenformat ZUGFeRD für den Austausch von Rechnungen in der Version 1.0 unterstützt. Für List & Label 25 wird nun auch die im März 2019 offiziell freigegebene Spezifikation der Version 2.0 unterstützt.

Update: Mit dem Release des Service Packs 25.002 unterstützt List & Label nun auch die ZUGFeRD Version 2.1, analog zu Version 2.0.

ZUGFeRD 2.0

 

 

 

Mit Hilfe des ZUGFeRD Standards kann der elektronische Rechnungsaustausch zwischen Verbrauchern, öffentlichen Verwaltungen und Unternehmen stark vereinfacht werden, da die Rechnungsdaten in hybrider Form zur Verfügung gestellt werden. Zum einen werden die Rechnungsdaten als unveränderliches PDF-Dokument mit dem PDF/A-3 Standard als visuelle Komponente bereitgestellt, zum anderen als strukturierte XML-Datei mit den XML-Rechnungsdaten für die technische Weiterverarbeitung. 

ZUGFeRD

Die Spezifikation für ZUGFeRD 2.0 wurde für Deutschland im März 2019 offiziell freigegeben und lehnt sich an den französischen Standard Factur-X 1.0 an, sodass beide Implementierungen technisch identisch sind und für einen einheitlichen Standard im Rechnungsaustausch auf europäischer Ebene sorgen.

Im Vergleich zum Standard ZUGFeRD 1.0 gibt es jedoch einen entscheidenden Unterschied in Bezug auf die Lizenzierung. Denn das Komitee hat sich dazu entschieden, den neuen Standard unter die Apache 2.0 Lizenzierung zu stellen, was sich mit dem bisher vereinfachten Deployment von List & Label nicht vereinbaren ließ.

Deshalb haben wir die ZUGFeRD 2.0 Unterstützung in ein anderes Modul ausgelagert. Damit muss bei der Redistribution einer Anwendung mit List & Label die Apache 2.0 Lizenz nicht weitergegeben werden, wenn gar kein ZUGFeRD 2.0 zum Einsatz kommt. Dieses Modul steht sowohl als 32- sowie als 64-Bit Build zur Verfügung.
Die neuen Module c[m/x]LL25xl_zugferd2.dll befinden sich im Verzeichnis "..\Verschiedenes\Optionale Module unter OSI-Lizenzen\ZUGFeRD\". Dort finden Sie auch die Apache 2.0 Lizenzierung in Form der Datei "license.txt".

Sie müssen lediglich diese beiden Module (abhängig von der Bitness der Anwendung) zum Deployment-Paket von List & Label hinzufügen – was übrigens auch ganz einfach mit dem Redistributionsassistenten gemacht werden kann. Natürlich sollten Sie die Apache 2.0 Lizenz vor der Weitergabe aufmerksam lesen.

Was nach wie vor von der Anwendung selbst bereitgestellt werden muss, sind die Rohdaten der Rechnung im XML-Format für die Integration in das PDF-Dokument. So könnte nun ein PDF-Export mit ZUGFeRD 2.0 aussehen:

// create export configuration
ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Pdf, "Export.pdf", "invoice.lst");
 
// define ZUGFeRD 2.0 options
LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDVersion, "2.0");
LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDConformanceLevel, "EXTENDED");
LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDXmlPath, "ZUGFeRD-invoice.xml");
 
// start export
LL.Export(exportConfiguration);

Neu ist hierbei die Export-Option LlExportOption.PdfZUGFeRDVersion, mit der man gezielt die ZUGFeRD Version bestimmen kann. Denn nach wie vor kann List & Label auch die Spezifikation 1.0 erfüllen und ist damit vollständig abwärtskompatibel. Ein kleiner Auszug aus der Dokumentation dazu:

Wert Bedeutung
0 In der angegebenen Datei 'zugferd-invoice.xml' (siehe auch PDF.ZUGFeRDXmlPath) wird geprüft, ob es sich um ein ZUGFeRD 1.0 oder 2.0 Format handelt. Das entsprechende Format wird dann verwendet. Sollte das Format nicht ausgelesen werden können, weil beispielsweise zu diesem Zeitpunkt die Datei 'zugferd-invoice.xml' noch nicht existiert, wird fest von ZUGFeRD 2.0 ausgegangen.
2.0 Es wird ZUGFeRD in der Version 2.0 forciert.
1.0 Es wird ZUGFeRD in der Version 1.0 forciert.
Default 0

Erfahren Sie mehr über die vielen neuen Highlights von List & Label 25.




Autor: Daniel Stein
Consultant, Development & Cooperations

Daniel wurde bei combit zum Softwareentwickler ausgebildet. Neben der Softwareentwicklung betreut er auch technische Kooperationen mit Geschäftspartnern, hält Workshops für Entwickler und unterstützt das Sales- und Service-Team als Berater im technischen Bereich. In seiner knappen Freizeit findet man ihn auf seinem Mountainbike rund um den Bodensee und in den nahen Alpen.


 


Kommentare


Daniel Stein
Hallo Herr Vietense,

vielen Dank für Ihre Anmerkung.

Als Beispiel können wir nur das .NET Code-Snippet aus diesem Beitrag nennen, mit dem man es schnell und einfach bspw. im C# Export Sample einbauen und testen kann. Der Grund dafür ist, dass combit List & Label die angesprochene ZUGFeRD XML-Datei _nicht_ bereitstellt oder zur Verfügung stellt. Das ist ein Task, den der Entwickler immer selbst durchführen muss. List & Label verwendet dann die XML-Datei und bindet Sie gemäß ZUGFeRDConformanceLevel und ZUGFeRDVersion korrekt in das zu erstellende PDF-Dokument ein.

Sollten Sie das Code-Snippet in einer anderen Programmiersprache benötigen, so lassen Sie es uns bitte wissen.

Viel Erfolg und beste Grüße,
Daniel Stein
08.10.2020 08:19:05

Lars Vietense
Hallo,

habt ihr ein Beispiel für eure Demo, wo man sich die Erstellung eines XMLs und dem PDF/A mal anschauen kann?

Gruß,
LV
08.10.2020 08:00:29


Ergänzen Sie hier Ihren Kommentar
 
 
 
 
 
+49 (0) 7531 90 60 10