3.18. Layout - gerenderte volle Seiten

Überblick

Der Text eines PDF-Dokumentes hat Eigenschaften wie Schriftgröße, Schriftfarbe, Linien, die richtig sein müssen, bevor der Kunde es in den Händen hält. In die gleiche Kategorie fallen auch Absätze, Ausrichtung von Text sowie Bilder und Bildbezeichnungen. PDFUnit testet diese Layout-Aspekte, indem es das Test-Dokument seitenweise rendert und dann jede Seite:

Es gibt folgende Testmethoden:

// Compare rendered page(s) with a given image. 
// The left-upper corner is 0/0:
.asRenderedPage(..).isEqualToImage(BufferedImage)
.asRenderedPage(..).isEqualToImage(File)
.asRenderedPage(..).isEqualToImage(String fileName)
.asRenderedPage(..).isEqualToImages(BufferedImage[] images)
.asRenderedPage(..).isEqualToImages(File[] imageFiles)
.asRenderedPage(..).isEqualToImages(String[] fileNames)

// Compare rendered page(s) with a given image. 
// The left-upper corner is given:  3.19: „Layout - gerenderte Seitenausschnitte“ 
.asRenderedPage(..).isEqualToImage(upperLeftX, upperLeftY, FormatUnit, BufferedImage)
.asRenderedPage(..).isEqualToImage(upperLeftX, upperLeftY, FormatUnit, File)
.asRenderedPage(..).isEqualToImage(upperLeftX, upperLeftY, FormatUnit, imageFileName)
.asRenderedPage(..).isEqualToImages(upperLeftX, upperLeftY, FormatUnit, BufferedImage)
.asRenderedPage(..).isEqualToImages(upperLeftX, upperLeftY, FormatUnit, File)
.asRenderedPage(..).isEqualToImages(upperLeftX, upperLeftY, FormatUnit, imageFileName)

Für den Vergleich können beliebige Seiten ausgewählt werden. Das Kapitel 13.2: „Seitenauswahl“ geht näher darauf ein. Es können aber auch Teile einer Seite mit Bildern verglichen werden. Die Syntax dazu wird in Kapitel 3.19: „Layout - gerenderte Seitenausschnitte“ beschrieben.

Beispiel - Ausgewählte Seiten als Bild vergleichen

Die Seiten 1, 3 und 4 sollen genauso aussehen, wie die referenzierten Bilddateien:

@Test
public void compareAsRenderedPage_MultipleImages() throws Exception {
  String filename = "documentUnderTest.pdf";
  
  String imagePage1 = "images/documentUnderTest_page1.png";
  String imagePage3 = "images/documentUnderTest_page3.png";
  String imagePage4 = "images/documentUnderTest_page4.png";
  PagesToUse pages134 = PagesToUse.getPages(1, 3, 4);
  
  AssertThat.document(filename)
            .restrictedTo(pages134)
            .asRenderedPage()
            .isEqualToImages(imagePage1, imagePage3, imagePage4)
  ;
}

Die Bilder können in allen Formaten vorliegen, die von java.awt.image.BufferedImage unterstützt werden. Das sind laut Javadoc GIF, PNG, JPEG, BMP und WBMP.