3.9. DIN 5008

Überblick

DIN 5008 definiert Regeln für das Format von Briefen und teilweise auch für deren Inhalte. PDFUnit bietet Möglichkeiten, diese Regeln zu überprüfen. Da der Standard viele Regeln als Empfehlung definiert, müssen Unternehmen die für sie relevanten Regeln auswählen. Technisch sieht das dann so aus, dass die relevanten Regeln in einer Excel-Datei abgelegt werden und alle Regeln der Excel-Datei auf ein PDF-Dokument oder mehrere Dokumente angewendet werden.

Die folgenden Methoden stehen für DIN 5008 prüfungen zur Verfügung:

// Methods to validate DIN 5008 constraints:
.compliesWith().din5008FormA()
.compliesWith().din5008FormB()

Im Internet sind Information zu DIN 5008 unter https://de.wikipedia.org/wiki/DIN_5008 zu finden. Kapitel 3.11: „Excel-Dateien für Validierungsregeln“ beschreibt ausführlich, wie Regeln in Excel erfasst werden.

Beispiel - Einzeldokument validieren

Im folgenden Beispiel wird nur das PDF-Dokument dem Test übergeben. Die Excel-Datei mit den DIN 5008 Regeln wird nicht an den Test übergeben, sondern in der Konfigurationsdatei pdfunit.config festgelegt:

#
#############################################################################
#
# Definition of PDF validation files.
#
#############################################################################
file.din5008.forma = src/main/resources/din5008/ValidationRules-DIN5008-FormA.xls
file.din5008.formb = src/main/resources/din5008/ValidationRules-DIN5008-FormB.xls

Das Verzeichnis kann als relativer oder absoluter Pfad angegeben werden. Ein Test sieht dann so aus:

@Test
public void compliesWithDin5008B() throws Exception {
  String filename = "documentUnderTest.pdf";

  AssertThat.document(filename)
            .compliesWith()
            .din5008FormB()
  ;
}

Falls es verschiedene Excel-Datei gibt, reicht der eine Eintrag in der pdfunit.config nicht aus. Deshalb kann auch der Name der Excel-Datei mit den Validierungsregeln an einen Test übergeben werden:

@Test
public void din5008FormB() throws Exception {
  String filename = "documentUnderTest.pdf";
  String rulesAsExcelFile = PATH_TO_RULES + "din5008-formB_letter-portrait.xls";
  PDFValidationConstraints excelRules = new PDFValidationConstraints(rulesAsExcelFile);

  AssertThat.document(filename)
            .compliesWith()
            .constraints(excelRules)
  ;
}

Beispiel - Alle Dokumente in einem Verzeichnis validieren

Beide vorhergehenden Tests können auch mit einem Verzeichnis statt mit einer Datei ausgeführt werden. In dem Falle wird jedes PDF-Dokument in dem Verzeichnis gegen die Excel-Datei validiert.

@Test
public void compliesWithDin5008BInFolder() throws Exception {
  String filename = "documentUnderTest.pdf";
  File folderWithPDF = new File(folderName);

  AssertThat.eachDocument()
            .inFolder(folderWithPDF)
            .compliesWith()
            .din5008FormB()
  ;
}