我有一个包含几个部分的大章节。我需要拆分一个部分内容,使其更漂亮和可读。我试图在预期的分页符之前使用setPageEmpty(false)和newPage(),但页面没有中断:
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
答案 0 :(得分: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
:{{1}只有在触发此行时,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
之间触发新页面。