Apache POI 页面分割符

13

我需要从Java程序中创建一个简单的Word文档以便打印。需要将输出分别打印在不同的页面上。我正在使用以下代码:

XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("TITLE");
run.addCarriageReturn();
run.setText("some text and stuff here");
run.addBreak(BreakType.PAGE);
run.setText("more text");
run.addCarriageReturn();
run.setText("one more line");

问题是,我在这个分页符后插入的任何内容都会单独出现在一个页面上(在上面的示例中,最后两行文本将显示在不同的页面上)。就好像现在每个语句之后都有一个“自动分页符”。

我尝试过使用新的运行或新段落,但结果总是相同。有什么想法吗?我开始感到非常沮丧....


您可以使用BreakType.PAGE,根据文档说明:在页面视图中显示文档时,指定当前分页应在文档的下一页重新开始。 - DeiAndrei
这就是我所做的。但似乎会产生连锁反应,将其后的所有内容都放在单独的页面上... - BendyMan
3个回答

14
XWPFDocument document = new XWPFDocument();
...
XWPFParagraph paragraph = document.createParagraph();
paragraph.setPageBreak(true);

6

找到了一个答案 - 不确定这是否是最佳方法。在页面的最后一行后必须添加回车符,否则它也会移到下一页。然后添加换行符(WORD_WRAPPING),并为下一页开始一个新的运行。(这种解决方案唯一的问题是它在每个新页面的顶部留下了一个空行!)

XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("TITLE");
run.addCarriageReturn();
run.setText("some text and stuff here");
run.addCarriageReturn();                 //separate previous text from break
run.addBreak(BreakType.PAGE);
run.addBreak(BreakType.WORD_WRAPPING);   //cancels effect of page break
WXPFRun run2 = paragraph.createRun();    //create new run
run2.setText("more text");
run2.addCarriageReturn();
run2.setText("one more line");


1
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("Text");
run.addBreak(BreakType.PAGE);
XWPFRun run2 = paragraph.createRun();
run.setText("Another text");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接