Из вашего предварительного вопроса вы уже знаете свойства раздела body.Вы знаете, что там размер страницы и ориентация установлены.Возможны также настройки границ страницы, а также линий границ страницы.
К сожалению, нет никакой документации о схемах ooxml, базовых объектах низкого уровня apache poi
, общедоступных.Таким образом, нам нужно загрузить исходные коды ooxml-схем , а затем выполнить javadoc
для получения документации по API.Там мы находим CTSectPr
и CTPageBorders
, которые являются линиями границы страницы.
Примечание ooxml-schemas
версия 1.4
предназначена для использования вместе с apache poi 4.0.0
.
Простейший пример созданияWord
страница с установленными линиями границы страницы:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
public class CreateWordPageBorder {
public static void main(String[] args) throws Exception {
XWPFDocument document= new XWPFDocument();
CTDocument1 ctDocument = document.getDocument();
CTBody ctBody = ctDocument.getBody();
CTSectPr ctSectPr = (ctBody.isSetSectPr())?ctBody.getSectPr():ctBody.addNewSectPr();
CTPageSz ctPageSz = (ctSectPr.isSetPgSz())?ctSectPr.getPgSz():ctSectPr.addNewPgSz();
//paper size letter
ctPageSz.setW(java.math.BigInteger.valueOf(Math.round(8.5 * 1440))); //8.5 inches
ctPageSz.setH(java.math.BigInteger.valueOf(Math.round(11 * 1440))); //11 inches
//page borders
CTPageBorders ctPageBorders = (ctSectPr.isSetPgBorders())?ctSectPr.getPgBorders():ctSectPr.addNewPgBorders();
ctPageBorders.setOffsetFrom(STPageBorderOffset.PAGE);
for (int b = 0; b < 4; b++) {
CTBorder ctBorder = (ctPageBorders.isSetTop())?ctPageBorders.getTop():ctPageBorders.addNewTop();
if (b == 1) ctBorder = (ctPageBorders.isSetBottom())?ctPageBorders.getBottom():ctPageBorders.addNewBottom();
else if (b == 2) ctBorder = (ctPageBorders.isSetLeft())?ctPageBorders.getLeft():ctPageBorders.addNewLeft();
else if (b == 3) ctBorder = (ctPageBorders.isSetRight())?ctPageBorders.getRight():ctPageBorders.addNewRight();
ctBorder.setVal(STBorder.THREE_D_EMBOSS);
ctBorder.setSz(java.math.BigInteger.valueOf(24));
ctBorder.setSpace(java.math.BigInteger.valueOf(24));
ctBorder.setColor("FF0000");
}
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.");
FileOutputStream out = new FileOutputStream("CreateWordPageBorder.docx");
document.write(out);
out.close();
document.close();
}
}