iText章节中的新页面

时间:2017-02-02 09:37:56

标签: java pdf formatting itext

我有一个包含几个部分的大章节。我需要拆分一个部分内容,使其更漂亮和可读。我试图在预期的分页符之前使用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

1 个答案:

答案 0 :(得分:3)

如果要在 newPage()内添加新页,则使用Chapter方法没有意义。请看下面的代码:

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

你看到了什么?

您会看到一个章节中填充了对象p1p2。在最后一行之前,p1p2这两个对象都不会呈现 document :{{1}只有在触发此行时,document.add(chapter);才会实际添加到p1,因为文档在添加之前不知道document会发生什么。

这意味着chapter在呈现 document.newPage()之前触发,而不是 p1p1之间的

要解决此问题,您需要使用p2对象:

Chunk.NEXTPAGE

该特殊Chapter chapter = new ChapterAutoNumber("Main info"); chapter.add(p1); chapter.add(Chunk.NEXTPAGE); chapter.add(p2); document.add(chapter); 对象现在是Chunk对象的一部分,将在chapterp1之间触发新页面。