13.8. Maßeinheiten - Points und Millimeter

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:

Beispiel - Größe von Formularfeldern

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

Beispiel - Größe des Seitenformats

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

Beispiel - Fehlermeldungen

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')'.