Für die Prüfung, ob ein PDF-Dokument einen der PDF-Standards (PDF/A, PDF/X, etc.) einhält, gibt es viele Tools und API's. Aber nur einige von ihnen lassen sich für automatisierte Tests nutzen. PDFUnit verwendet den 'Preflight'-Parser von PDFBox.
Informationen zum 'Preflight'-Parser stehen auf der Projekt-Site https://pdfbox.apache.org/1.8/cookbook/pdfavalidation.html zur Verfügung.
Eine PDF/A-Validierung wird mit dieser Methode gestartet:
// Validate PDF/A-1a and PDF/A-1b:
.compliesWith().pdfStandard(Standard)
Das folgende Beispiel überprüft die Einhaltung des Standards PDF/A-1a:
@Test public void compliesWithPDFA() throws Exception { String fileName = "pdf_a/documentUnderTest.pdf"; AssertThat.document(fileName) .compliesWith() .pdfStandard(PDFA_1A) ; }
Es können Dateien verarbeitet werden, nicht aber Byte-Arrays und Streams. |
|
Mit den Konstanten |
Die vom Preflight-Parser gelieferten Fehler werden von PDFUnit durchgereicht und sehen in Eclipse und als HTML beispielsweise so aus:
Eine PDF/A-Validierung kann auch auf Verzeichnisse angewendet werden:
@Test public void compliesWithPDFA_InFolder() throws Exception { File foldertoWatch = new File("pdf_a-1b"); FilenameFilter filenameFilter = new FilenameContainingFilter("tn0001"); AssertThat.eachDocument() .inFolder(foldertoWatch) .passedFilter(filenameFilter) .compliesWith() .pdfStandard(PDFA_1B) ; }