2017-02-02 6 views
0

У меня есть большая глава, содержащая несколько разделов. Мне нужно разделить содержимое раздела, чтобы сделать его более красивым и читаемым. Я пытался использовать setPageEmpty (ложь) и NEWPAGE() перед ожидаемым разрывом страницы, но страница не ломается:Новая страница в главе в iText

Document doc = new Document(); 
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(filename)); 
writer.setPageEvent(new PageEventHandler(doc)); 
doc.open(); 

Chapter chapter = new ChapterAutoNumber("Main info"); 
chapter.add(new Paragraph("Lorem ipsum dolor sit amet", font)); 
writer.setPageEmpty(false); 
itextDocument.newPage(); 

После этого кода я собираюсь на заполнить содержание раздела и, наконец, я собираюсь написать:

doc.add(chapter); 

Но после первого абзаца мне нужен разрыв страницы. Как разделить содержимое раздела? Я использую IText 5,5

ответ

3

Это не имеет смысла использовать метод newPage(), если вы хотите добавить новую страницу внутриChapter. Взгляните на следующий фрагмент:

Chapter chapter = new ChapterAutoNumber("Main info"); 
chapter.add(p1); 
document.newPage(); 
chapter.add(p2); 
document.add(chapter); 

Что вы видите?

Вы видите раздел, населенный объектами p1 и p2. Оба объекта, p1 и p2, не не визуализируются к documentдо самой последней строки: document.add(chapter); Только тогда, когда эта линия запускается, p1 фактически добавляется к document, поскольку документ не знает о том, что происходит с chapter, прежде чем добавлять его.

Это означает, что document.newPage() срабатывает перед темp1 оказывается, вместо того, чтобы междуp1 и p2.

Чтобы решить эту проблему, необходимо использовать Chunk.NEXTPAGE объект:

Chapter chapter = new ChapterAutoNumber("Main info"); 
chapter.add(p1); 
chapter.add(Chunk.NEXTPAGE); 
chapter.add(p2); 
document.add(chapter); 

Это специальный Chunk объект теперь часть chapter объекта, и новая страница будет срабатывать между p1 и p2.

+0

Я вижу! Большое спасибо за объяснение и фрагмент – mogilka

+0

Можем ли мы сделать 'Chunk.NEXTPAGE' ландшафтом? Возможно ли, чтобы страница изменилась на новой странице? – Blaise

+0

@Blaise Нет, я не думаю, что это возможно в iText 5 или ранее. Мы зафиксировали это в iText 7. –