ZUGFeRD Daten werden in automatischen Prozessen erstellt und weiterverarbeitet. Da sie unsichtbar sind, sind sie schwer auf Korrektheit zu überprüfen. Einen Unterschied zwischen den sichtbaren Daten eines PDF-Dokumentes und den unsichtbaren prozessrelevanten ZUGFeRD-Daten sollte es nicht geben. Aber wie prüfen Sie das?
PDFUnit liest Werte aus dem ZUGFeRD-Dokument und vergleicht sie mit den Werten auf einer PDF-Seite oder einem Seitenausschnitt:
@Test public void validateZUGFeRD_CustomerNameInvoiceIdIBAN() throws Exception { String filename = "zugferd10/ZUGFeRD_1p0_BASIC_Einfach.pdf"; XMLNode nodeBuyerName = new XMLNode("ram:BuyerTradeParty/ram:Name"); XMLNode nodeInvoiceId = new XMLNode("rsm:HeaderExchangedDocument/ram:ID"); PageRegion regionPostalTradeAddress = createRegionPostalAddress(); PageRegion regionInvoiceId = createRegionInvoiceId(); AssertThat.document(filename) .restrictedTo(FIRST_PAGE) .restrictedTo(regionPostalTradeAddress) .hasText() .containingZugferdData(nodeBuyerName) ; AssertThat.document(filename) .restrictedTo(FIRST_PAGE) .restrictedTo(regionInvoiceId) .hasText() .containingZugferdData(nodeInvoiceId) ; }
Manchmal sind die ZUGFeRD-Daten und die sichtbaren Daten unterschiedlich formatiert. Das ist z.B. für die Rechnungssumme im verwendeten Beispieldokument 'ZUGFeRD_1p0_BASIC_Einfach.pdf' der Fall. Sie wird auf der PDF-Seite mit deutschem Dezimalkomma und im ZUGFeRD-Dokument mit englischem Dezimalkomma dargestellt. In solchen Fällen müssen andere Testmethoden von PDFUnit benutzt werden. Sie sind Kapitel 3.39: „ZUGFeRD“ ausführlich dargestellt.