Seit Ende Juni 2014 wurde das ZUGFeRD-Format für elektronische Rechnungen in der Version 1.0 veröffentlicht und ist damit der Entwurfsphase entwachsen – sozusagen „ready for production“.
Da nun schon relativ viele Software-Firmen auf diesen „Zug“ (ja, ja, ich weiß, 5€ in die schlechte Wortspielkasse…) aufgesprungen sind, ist das momentan fast ein wenig so wie früher mit den Tetris-Clones (jeder programmiert sich eins). Das endet nun natürlich in vielen proprietären, closed-source Lösungen – für die meisten PDF-affinen Software-Firmen kein Nachteil, die möchten ja irgendwo die eigenen Tools verkaufen. Aber: selbst wenn’s als Anfix-Freeware-Tool nachgeworfen wird, ist es immer noch proprietär und closed-source.
Roll my own ZUGFeRD!
Ich wollte daher auch mal in die Richtung schießen, und hab‘ nach drei Abenden bereits normale PDFs zu PDF/a3 mit eingebettetem, sowie validen ZUGFeRD-invoice.XML (XMP/RDF) herstellen können – und zwar ohne eine Lib zu kaufen, nur mit Standard-Lösungen, C#.net und VS2010.
Was braucht man so?
- Apache PDFBox (https://pdfbox.apache.org/) bzw. PDFBox.NET (http://www.squarepdf.net/pdfbox-in-net)
Die in Java geschriebene PDFBox ist open source, bewährt, kann sehr viel, und hat eine angenehme Lizenz. Da Java für mich etwas unhandlich war, verwende ich die mit dem IKVM IL-Converter hergestellten static libs für .net. - IKVM (http://www.ikvm.net/)
Tolles open source Projekt, um tolle Java Software in .net nutzbar zu machen. Angenehme Lizenz. - Mustang Project (http://www.mustangproject.org/)
Ebenfalls ein open source Java Projekt. Zeigt, wie man mit PDFBox ein PDF/a3 herstellt und ZUGFeRD-invoice.XML einbettet. - optional: ZUGFeRD-csharp (https://github.com/stephanstapel/ZUGFeRD-csharp)
Mit weniger Codezeilen kann man kein ZUGFeRD-invoice.XML erzeugen. Ich verwende die Lib via NuGet.
Ich werde beizeiten das Sample-Projekt mal aufräumen und zum Download anbieten und/oder etwas Funktionalität daraus in einen webdienst gießen.
Update
Ein aktuelles Sample findet sich hier:
28. August 2014 um 23:07 Uhr
Hallo,
danke für den Artikel! Freut mich, dass meine Bibliothek für Dich funktioniert.
Kannst Du genauer beschreiben, wie Du aus einer PDF-Datei eine PDF/A-3-Datei machst mit den Projekten? Das würde mir wiederum enorm helfen!
Stephan
24. Juli 2017 um 10:11 Uhr
Hallo
Falls hier noch etwas passiert, interessiert mich auch ein Kommentar zur Frage von Stephan, wie die Konvertierung zu PDF/A3 angegangen/gelöst wurde.
Danke
24. Juli 2017 um 10:55 Uhr
Ist doch schon lange passiert… Wie beim zugrundeliegenden Java-Projekt von mustangproject.org wird ein PDF/a1 als Basis verwendet und mit Apache’s PDFBox in ein PDF/a3u gewandelt – und das ZUGFeRD xml eingefügt. Im aktuellsten Sample validiert das resultierende PDF/a3u auch korrekt (zumindest gegen die PDF/a3u spec.).
Also bitte einfach zur letzten Version weitergehen:
http://to-works.de/wp/zaumzeug-c-zugferd-beispiel-implementierung-updated/