4.4. Bilder vergleichen

Anzahl

Der erste Test vergleicht die Anzahl der Bilder eines PDF-Dokumentes miteinander:

@Test
public void haveSameNumberOfImages() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  
  AssertThat.document(filenameTest)
            .and(filenameReference) 
            .haveSameNumberOfImages()
  ;
}

Der Vergleich der Anzahl der Bilder kann auf ausgewählte Seiten eingeschränkt werden:

@Test
public void haveSameNumberOfImages_OnPage2() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  PagesToUse page2 = PagesToUse.getPage(2);
  
  AssertThat.document(filenameTest)
            .and(filenameReference) 
            .restrictedTo(page2)
            .haveSameNumberOfImages()
  ;
}

Die Möglichkeiten der Seitenauswahl sind in Kapitel 13.2: „Seitenauswahl“ beschrieben.

Bildinhalte

Die in einem Dokument enthaltenen Bilder können mit denen eines Referenz-Dokumentes verglichen werden. Bilder zweier Dokumente gelten als gleich, wenn sie Byte-weise identisch sind:

/**
 * The method haveSameImages() does not consider the order of the images.
 */
@Test
public void haveSameImages() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  
  AssertThat.document(filenameTest)
            .and(filenameReference) 
            .haveSameImages()
  ;
}

Bei diesem Vergleich bleibt unberücksichtigt, auf welchen Seiten die Bilder vorkommen, und auch, wie häufig ein Bild im Dokument verwendet wird.

Wenn aber Bilder auf bestimmten Seiten gleich sein sollen, müssen die Seiten zuvor eingeschränkt werden:

@Test
public void haveSameImages_OnPage2() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  PagesToUse page2 = PagesToUse.getPage(2);
  
  AssertThat.document(filenameTest)
            .and(filenameReference)
            .restrictedTo(page2)          
            .haveSameImages()            1
  ;
}
@Test
public void haveSameImages_BeforePage2() throws Exception {
  String filenameTest = "documentUnderTest.pdf";
  String filenameReference = "reference.pdf";
  PagesToUse pagesBefore2 = ON_EVERY_PAGE.before(2);
  
  AssertThat.document(filenameTest)
            .and(filenameReference) 
            .restrictedTo(pagesBefore2)  
            .haveSameImages()            1
  ;
}

1 1

Die Reihenfolge der Bilder spielt für den Vergleich keine Rolle.

Bei etwaigen Unklarheiten über die im PDF enthaltenen Bilder können alle Bilder eines PDF-Dokumentes mit dem Hilfsprogramm ExtractImages extrahiert werden. Siehe Kapitel 9.3: „Bilder aus PDF extrahieren“.