2015-02-16 6 views
5

Мне нужно создать простой документ Word для печати из java-программы. Необходимо, чтобы выходные данные печатались на отдельных страницах. Я использую следующий код:Apache poi page breaks

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");

Беда в том, что-то я пытаюсь вставить после появления этого разрыва страницы на своих собственных на странице (последние две строки текста в выше пример появится на разных страницах). Это похоже на то, что после каждого утверждения теперь происходит «автоматический перерыв страницы». Я пробовал использовать новый прогон или новый абзац, но результат всегда один и тот же. Есть идеи? Начните с разочарования здесь ....

+0

используется BreakType.PAGE, которые Acoording к документации: Указывает, что текущий разрыв перезапускается на следующей странице документа, когда документ отображается в режиме просмотра страницы. – DeiAndrei

+0

Вот что я сделал. Но он, кажется, стучит в эффект и ставит все после него на отдельные страницы ... – BendyMan

ответ

4

Нашли ответ - не уверен, что это лучший способ. Необходимо добавить возврат каретки после последней строки страницы или переместить ее на следующую страницу. Затем добавьте Break (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");

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