3.22. PDF/A

Überblick

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)

Beispiel

Das folgende Beispiel überprüft die Einhaltung des Standards PDF/A-1a:

@Test
public void compliesWithPDFA() throws Exception {
  String fileName = "pdf_a/documentUnderTest.pdf"; 1
  
  AssertThat.document(fileName)
            .compliesWith()
            .pdfStandard(PDFA_1A)                  2
  ;
}

1

Es können Dateien verarbeitet werden, nicht aber Byte-Arrays und Streams.

2

Mit den Konstanten PDFA_1A und PDFA_1B wird die PDF/A-Validierung gesteuert.

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)
  ;
}