如何通过apache poi在docx中创建分节符类型的下一页

时间:2017-11-03 08:39:39

标签: java apache-poi docx

我想在docx文件中创建不同的部分,每个部分都有不同的页码格式(一个部分有1,2,3 ...页码格式,另一个部分有a,b,c,...页码格式等)。我想查看"不同的第一页"每个部分的选项如下图所示: Different First Page

注意:我尝试过这段代码,但是他们创建的是分页符,而不是分节符:

....
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.addBreak(BreakType.PAGE);
....

另一个代码:

paragraph = document.createParagraph();
paragraph.setPageBreak(true);

这两个代码都创建分页符而不是分节符。

分节符是这样的,我想要这个: section breaks

和分页符是这样的,我不想要它: page breaks

首先,如何创建分节符? 其次,如何设置不同的页码格式? 第三,我如何设置"不同的第一页"每个部分的选项? 感谢。

2 个答案:

答案 0 :(得分:1)

POI目前(从POI 3.17开始)支持高级界面中的部分。您将必须了解基础XML并使用CT类来构建您的部分。这是一个高水平的飞行。对于除文档中最后一节之外的所有部分,<sectPr>元素存储在该部分的最后一段中。对于文档的最后一部分,<sectPr>元素是<body>元素的最后一个子元素。您将不得不自己编写代码。也许你可以为项目贡献补丁。

答案 1 :(得分:1)

基于jmarkmurphy的回答,我实现了一些对我有用的东西:

CTBody body = document.getDocument().getBody();
CTSectPr sectPr = body.getSectPr();
if (sectPr != null) {
  XWPFParagraph lastParagraph = document.createParagraph();
  lastParagraph.getCTP().addNewPPr().setSectPr(sectPr);
  body.unsetSectPr();
}
document.createParagraph().setPageBreak(true);