2015-02-16 18 views
5

Potrzebuję utworzyć prosty dokument tekstowy do drukowania z programu java. Konieczne jest wydrukowanie wydruków na oddzielnych stronach. Używam następujący kod: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");

Kłopot w tym, coś próbuję wstawić po pojawieniu się ten podział strony na własną rękę na stronie (ostatnie dwa wiersze tekstu w powyższym przykład pojawi się na różnych stronach). Wygląda to tak, jakby po każdym stwierdzeniu pojawił się "automatyczny podział strony". Próbowałem użyć nowego uruchomienia lub nowego akapitu, ale wynik jest zawsze taki sam. Jakieś pomysły? Zaczynam być bardzo sfrustrowani ...

+0

użyć BreakType.PAGE które acoording do dokumentacji: Określa, że ​​bieżące rozbicie powinno się ponownie uruchomić na następnej stronie dokumentu, gdy dokument jest wyświetlany w widoku strony. – DeiAndrei

+0

Tak właśnie zrobiłem. Wygląda jednak na to, że wywołuje efekt domina i umieszcza wszystko na oddzielnych stronach ... – BendyMan

Odpowiedz

4

Znaleźliśmy odpowiedź - nie jestem pewien, czy to najlepszy sposób. Konieczne jest dodanie powrotu karetki po ostatnim wierszu strony lub też przejście do następnej strony. Następnie dodaj Break (WORD_WRAPPING) i rozpocznij nowy przebieg dla następnej strony. (Jedyny problem z tego rozwiązania jest to, że pozostawia pustą linię na górze każdej nowej stronie!)

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); 
Powiązane problemy