Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to set page margins for word document using apache poi?

I want to set page-margins for word document created using apache poi-3.9. I found it can be done using CTPageMar but CTPageMar is not being resolved. I am using apache poi-3.9

I tried this

CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
    CTPageMar pageMar = sectPr.addNewPgMar();
    pageMar.setLeft(BigInteger.valueOf(720L));
    pageMar.setTop(BigInteger.valueOf(1440L));
    pageMar.setRight(BigInteger.valueOf(720L));
    pageMar.setBottom(BigInteger.valueOf(1440L));
like image 862
imdzeeshan Avatar asked Apr 22 '15 08:04

imdzeeshan


2 Answers

As far as I understand, the problem is not related to the provided code, it is connected with missing CTPageMar class.

The source of missing classes problem is clearly explained in Apache POI FAQ:

To use the new OOXML file formats, POI requires a jar containing the file format XSDs [...] You can download the jar by hand from the POI Maven Repository.

URL from FAQ is not working, but you can find required jar in central maven repo.

like image 73
Artur Malinowski Avatar answered Sep 28 '22 06:09

Artur Malinowski


To resolve the class CTPageMar you will have to add the package org.apache.poi:ooxml-schema to your classpath. The corresponding JAR contains all schemas. You can find more information here.

like image 25
Benjamin Muschko Avatar answered Sep 28 '22 07:09

Benjamin Muschko