2015-02-16 13 views
5

Ich muss ein einfaches Word-Dokument zum Drucken aus einem Java-Programm erstellen. Die Ausgabe muss auf separaten Seiten gedruckt werden. Ich verwende den folgenden Code:Apache poi Seitenumbrüche

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

Problem ist, dass alles, was ich versuche, einzufügen, nachdem dieser Seitenumbruch auf eigenem auf einer Seite angezeigt wird (die letzten zwei Zeilen Text in den obigen Beispiel erscheint auf verschiedenen Seiten). Es ist so, als ob nach jeder Anweisung jetzt ein "automatischer Seitenwechsel" erfolgt. Ich habe versucht mit neuen run, oder neuen Absatz, aber das Ergebnis ist immer das gleiche. Irgendwelche Ideen? Beginnen Sie sehr frustriert hier ....

+0

Sie BreakType.PAGE verwenden, die in der Dokumentation acoording: Gibt an, dass die aktuelle Unterbrechung auf der nächsten Seite des Dokuments neu gestartet werden soll, wenn das Dokument in der Seitenansicht angezeigt wird. – DeiAndrei

+0

Das habe ich getan. Aber es scheint eine Wirkung zu haben und alles danach auf getrennte Seiten zu stellen ... – BendyMan

Antwort

4

Haben Sie eine Antwort gefunden - nicht sicher, es ist der beste Weg. Es ist notwendig, nach der letzten Zeile der Seite einen Wagenrücklauf hinzuzufügen, oder es wird ebenfalls zur nächsten Seite gewechselt. Fügen Sie dann Break (WORD_WRAPPING) hinzu, und starten Sie einen neuen Lauf für die nächste Seite. (Das einzige Problem mit dieser Lösung ist es an der Spitze jeder neuen Seite eine leere Zeile verlässt!)

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