Tests mit Seitenausschnitten benötigen Werte für Länge und Breite. Die Werte können in Millimeter oder Points angegeben sein. Dafür existieren die folgenden Konstanten:
// Predefined format units:
com.pdfunit.Constants.MILLIMETERS
com.pdfunit.Constants.POINTS
Bei der Umrechnung von Points in Millimeter wird mit 72 DPI (Dots per Inch) gerechnet. Nachfolgend ein paar Beispiele, in denen Maßeinheiten explizit oder implizit eine Rolle spielen:
@Test public void hasField_Width() throws Exception { String filename = "documentUnderTest.pdf"; String fieldname = "Title of 'someField'"; int allowedDeltaForMillis = 2; int allowedDeltaForPoints = 0; AssertThat.document(filename) .hasField(fieldname) .withWidth(450) // default is POINTS .withWidth(450, POINTS, allowedDeltaForPoints) .withWidth(159, MILLIMETERS, allowedDeltaForMillis) ; }
Mit der Breite und Höhe von Formularfeldern sind die PDF-internen Feldeigenschaften gemeint. Weil diese in 'Points' gespeichert sind, ist auch der Default in PDFUnit für diese Methoden 'Points'. Und weil ein Umrechnen von Millimetern in Points zu Rundungsfehlern führen kann, muss als dritter Parameter noch die erlaubte Abweichung mitgegeben werden.
@Test public void hasHugeFormat() throws Exception { String filename = "documentUnderTest.pdf"; int heightMM = 1117; int widthMM = 863; DocumentFormat formatMM = new DocumentFormatMillis(widthMM, heightMM); AssertThat.document(filename) .hasFormat(formatMM) ; }
Das Format für die Abmessung einer Seite wird nicht über Konstanten
gesteuert, sondern über die zwei Klassen DocumentFormatMillis
und
DocumentFormatPoints
.
In Fehlermeldungen werden sowohl Millimeter, als auch die ursprünglich
verwendete Einheit ausgegeben. Würde beispielsweise die Breite im
letzten Beispiel mit 111 POINTS
angegeben,
würde PDFUnit folgende Fehlermeldung ausgeben:
Wrong page format in 'physical-map-of-the-world-1999_1117x863mm.pdf' on page 1. Expected: 'height=1117.60, width=39.16 (as 'mm', converted from unit 'points')', but was: 'height=1117.60, width=863.60 (as 'mm')'.