Prolog

Projekt-Voraussetzungen (IDEs, Frameworks, Libs, …)

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).