2016-05-12 7 views
1

Ich verwende Apache Poi CTPageMar-Klasse, um einen Seitenrand auf einen vom Benutzer angegebenen Wert festzulegen. Das Problem ist, dass ich nicht gefunden habe, was die Einheit der Werte ist, die in den Funktionen setLeft, setRight, setTop und setBottom übergeben werden müssen. Ich versuchte cm, Pixel, Zoll, aber sie scheinen alle falsch. Irgendeine Idee?CTPageMar Werte Einheit?

XWPFDocument wordDocument = new XWPFDocument(new FileInputStream(input)); 
CTSectPr sectPr = wordDocument.getDocument().getBody().addNewSectPr(); 
CTPageMar pageMar = sectPr.addNewPgMar(); 
pageMar.setLeft(BigInteger.valueOf(left)); 
pageMar.setTop(BigInteger.valueOf(top)); 
pageMar.setRight(BigInteger.valueOf(right)); 
pageMar.setBottom(BigInteger.valueOf(bottom)); 
wordDocument.write(new FileOutputStream(output)); 
+0

Wenn Sie einen bekannten Wert in Word festlegen, dann lesen Sie es in Apache POI zurück, was sehen Sie? – Gagravarr

Antwort

3

Die Maßeinheit ist Twip (Zwanzigstel Punkt). Ein Twip ist 1/1440 Zoll. So

... 
    int twipsPerInch = 1440; 
    pageMar.setLeft(BigInteger.valueOf(1 * twipsPerInch)); 
... 

wird 1 Zoll linken Rand sein.

+0

Vielen Dank. Es klappt :) –