Prolog
Projekt-Voraussetzungen (IDEs, Frameworks, Libs, …)
- Visual Studio 2015 (oder neuer, nach einem SLN-Downgrade geht wahrscheinlich auch noch 2008)
- .net 4.0 (oder neuer, es geht aber wahrscheinlich auch 3.5)
- PDFBox.NET (mind. v1.8.4, http://www.squarepdf.net/pdfbox-in-net, IKVM.NET ist im Bundle drin)
- ZUGFeRD electronic invoice creator (mind. v1.8.2, https://www.nuget.org/packages/ZUGFeRD-csharp)
Implementierung
Selektiver Port von mustangproject.org (Java nach C#.net)
Ich habe folgende Klassen (zumindest zum größten Teil) übernommen:
- XMPSchemaPDFAExtension.cs (Updated)
- XMPSchemaZugferd.cs (Updated)
- ZUGFeRDExporter.cs (Updated)
- ZUGFeRDImporter.cs
Hinweis: Portieren ist hierbei relativ easy, weil durch IKVM.NET Java-Datentypen und Klassen bereitgestellt werden, was den Port zu einer reinen syntaktischen Angelegenheit macht. Geht wirklich fast im Vorbeigehen…
„Zaumzeug“
Nebst, daß ich für dieses Wortspiel in die Hölle komme, enthält die Zaumzeug-Klasse Sample-Methoden, um einen ZUGFeRD Beispiel-Datensatz herzustellen und diesen in ein beliebiges PDF/A1 einzubetten, sowie die ZUGFeRD-Daten wieder programmatisch zu extrahieren. Ich habe ein solches PDF/A1 einfach mit Word 2010 erstellt – unbedingt Option wählen: „ISO 19005-1-kompatibel (PDF/A)“.
Auf der obersten Schicht ist der Aufruf dann wirklich simpel:
byte[] zugferdData; //create ZUGFeRD and attach it to pdf Zaumzeug zz = new Zaumzeug(); if (zz.CreateSampleZugferdXML(out zugferdData) == null) { zz.attachZUGFeRD(pathPdfFile, zugferdData); }
Was ist neu?
Durch Portierung des aktuellen Sourcecodes von mustangproject.org validiert das erzeugte PDF mit eingebetteten ZUGFeRD Daten nun (endlich) auch erfolgreich gegen das 3-Heights™ PDF Validator Online Tool bezüglich der PDF/A3u Spezifikation.
Sample-Download
Hier ist der Download des kompletten Projekts als VS 2015 Solution mit allen Assemblies: Zaumzeug (22Mb).
14. August 2018 um 16:37 Uhr
Hallo,
zuerstmal das Tool ist echt klasse. Jedoch ist unser Problem das wir keine PDF/A1 PDFs erzeugt bekommen. Da wir Crystal Reports nutzen werden nur normale PDFs erzeugt. Weist du vielleicht von einem Programm dass die Konvertierung von PDF zu PDF/A1 vornimmt. Am liebsten natürlich eine C#-Bibliothek,
19. August 2018 um 1:50 Uhr
Grundsätzliches: Ein PDF/a1 muß ein paar Extras bzw. einige Einschränkungen umsetzen: https://pdfbox.apache.org/1.8/cookbook/pdfacreation.html.
Einen originellen Weg zum Ziel habe ich hier gesehen: https://stackoverflow.com/questions/38973430/apache-pdfbox-and-pdf-a-3 (das ist natürlich nicht der Königsweg, aber wenn es gestern funktionieren muß… :).
Weiteres habe ich per Email geschickt…
30. Januar 2020 um 11:48 Uhr
Hi, ich finde dein Projekt hier echt super und vor allem clever, ich suche nun schon eine Weile nach einer guten .Net-Lösung. Hast du den Code irgendwo auf Github oder wärst bereit ihn dort einzustellen?
30. Januar 2020 um 12:19 Uhr
Die Idee das zu tun war tatsächlich mal da, aber leider erschien es mir nach dem Ende von IKVM.net (siehe http://weblog.ikvm.net) nicht mehr sinnvoll. Ich würde für ein neues „commercial-quality“ Projekt diesen Ansatz nicht mehr wählen. Man kann jedoch sehr wohl bei dem .net, pdfbox, mustangproject Stack bleiben, indem man IKVM durch JNBridge ersetzt: https://jnbridge.com/blog/ikvm-net-jnbridgepro/?utm_campaign=42418078&utm_source=o&utm_medium=1240249250394782&utm_term=ikvm – allerdings habe ich bisher keine Pläne dies als Sample umzusetzen.