3.13. Format

Überblick

Welches Format benötigen Sie: DIN-A4 quer, Letter hochkant oder vielleicht ein ganz individuelles Format für ein Poster? Tests auf so etwas einfaches, wie Papierformate sind scheinbar überflüssig. Aber haben Sie schon einmal eine Datei im Format LETTER auf einem DIN-A4-Drucker gedruckt. Das geht - aber das Schriftbild sieht nicht immer gut aus. Deshalb gibt es folgende Testmethode:

// Simple tests for page formats:
.hasFormat(..)

Dokumente mit einheitlichem Seitenformat

Übliche Seitenformate können mit Konstanten geprüft werden:

import static com.pdfunit.Constants.*;
...
@Test
public void hasFormat_A4Landscape() throws Exception {
  String filename = "documentUnderTest.pdf";
  
  AssertThat.document(filename)
            .hasFormat(A4_LANDSCAPE)    1
  ;
}
import static com.pdfunit.Constants.*;
...
@Test
public void hasFormat_LetterPortrait() throws Exception {
  String filename = "documentUnderTest.pdf";
  
  AssertThat.document(filename)
            .hasFormat(LETTER_PORTRAIT) 1
  ;
}

1 1

Für gängige Formate existieren Konstanten in der Klasse com.pdfunit.Constants

Auch individuelle Papierformate können geprüft werden:

@Test
public void hasFormat_FreeFormat_1117x836_mm() throws Exception {
  String filename = "documentUnderTest.pdf";
  int heightMM = 1117;
  int widthMM = 863;
  DocumentFormat formatMM = new DocumentFormatMillis(widthMM, heightMM);
  
  AssertThat.document(filename)
            .hasFormat(formatMM)
  ;
}

Es wird empfohlen, für alle Größenangaben die Einheit Millimeter zu verwenden. Zwar gibt es auch die Klasse DocumentFormatPoints, aber die Einheit "Point" ist von der Auflösung abhängig. Zwei Dokumente mit gleicher Anzahl an "Punkten" sind unterschiedlich groß, wenn ein Dokument die Auflösung 72 DPI (72 Punkt pro Inch) und das andere 150 DPI hat.

Alle Werte sind Ganzzahlen. Falls Sie ein Format testen wollen, das Werte in der Größenordnung von Zehntelmillimetern aufweist, runden Sie die Werte auf oder ab. Der Längenvergleich mit PDFUnit berücksichtigt sowieso die durch die DIN 476 erlaubte Toleranz, sodass Zehntelmillimeter keine entscheidende Rolle spielen.

Informationen zur DIN-Norm für Papierformate finden sie bei Wikipedia (http://de.wikipedia.org/wiki/Papierformat). Es muss betont werden, dass beim Vergleich aller Formate die geringere Toleranz der DIN-Norm 476 verwendet wird, auch wenn die Norm ISO 216 eine größere Toleranz erlaubt.

Formate auf einzelnen Seiten

Auch ein Dokument mit unterschiedlichen Formaten kann überprüft werden. Im folgenden Beispiel wird nur das Format auf Seite 3 überprüft:

@Test 
public void hasFormatOnPage3() throws Exception {
  String filename = "documentUnderTest.pdf";
  PagesToUse page3 = PagesToUse.getPage(3);
  
  AssertThat.document(filename)
            .restrictedTo(page3)
            .hasFormat(A5_PORTRAIT)
  ;
}

Formattests können auf beliebige einzelne Seiten und Seitenbereiche eingeschränkt werden, wie es in Kapitel 13.2: „Seitenauswahl“ beschrieben ist: