Zurück |  | Weiter

## 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:

- ... mit einer Bild-Datei vergleicht. PDFUnit liefert das Hilfsprogramm `RenderPdfToImages` mit, um eine oder mehrere PDF-Seiten zu rendern. Es ist in Kapitel 9.7: „PDF-Dokument seitenweise in PNG umwandeln“ beschrieben.

- ... mit der ebenfalls gerenderten Seite eines Referenz-Dokumentes vergleicht, die zuvor als richtig bewertet wurde. Das Kapitel 4.10: „Layout vergleichen (gerenderte Seiten)“ beschreibt diesen Vergleich.

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`.

Zurück | Nach oben | Weiter
3.17. Layer | Zum Anfang | 3.19. Layout - gerenderte Seitenausschnitte