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 den ebenfalls gerenderten Seiten eines Master-Dokumentes vergleicht, das zuvor als richtig bewertet wurde. Das Kapitel 4.11: „Layout vergleichen (gerenderte Seiten)“ beschreibt diesen Vergleich.
Für Tests von PDF-Seiten als gerendertes Bild steht das Tag <asRenderedPage />
zur Verfügung.
<!-- Tags to compare rendered PDF pages with image files: --> <asRenderedPage on=".." (One of these attributes ... onPage=".." ... onEveryPageAfter=".." ... onEveryPageBefore=".." ... onAnyPageAfter=".." ... onAnyPageBefore=".." ... is required) /> <!-- Nested tag of <asRenderedPage> : --> <isEqualTo image=".." (required) positionUpperLeftX=".." (optional) positionUpperLeftY=".." (optional) unit=".." (optional) />
Für den Vergleich können beliebige Seiten angegeben werden. Das Kapitel 13.2: „Seitenauswahl“ geht näher darauf ein.
Dieses Kapitel beschreibt die Vergleiche für ganze Seiten. Wenn es keinen Sinn macht, eine vollständige PDF-Seite als gerendertes Bild zu vergleichen, kann der Vergleich auf einen Ausschnitt beschränkt werden. Das nachfolgende Kapitel 3.16: „Layout - gerenderte Seitenausschnitte“ geht darauf näher ein.
Die Seiten 1, 3 und 4 sollen genauso aussehen, wie die eines Vergleichsdokumentes:
<testcase name="compareAsRenderedPage_MultipleImages"> <assertThat testDocument="master/documentUnderTest.pdf"> <asRenderedPage onPage="1, 3, 4"> <isEqualTo image="master/documentUnderTest_Page1.png" /> <isEqualTo image="master/documentUnderTest_Page3.png" /> <isEqualTo image="master/documentUnderTest_Page4.png" /> </asRenderedPage> </assertThat> </testcase>