【问题标题】:New page within chapter in iTextiText 章节内的新页面
【发布时间】:2017-02-02 09:37:56
【问题描述】:

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

【问题讨论】:

    标签: java pdf formatting itext


    【解决方案1】:

    如果你想在Chapter 中添加一个新页面inside,那么使用newPage() 方法是没有意义的。看看下面的sn-p:

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

    你看到了什么?

    您会看到一个章节填充了对象p1p2p1p2 两个对象不会渲染document 直到最后一行document.add(chapter); 仅当触发此行时, p1 实际上是添加到 document 的,因为在添加之前文档不知道 chapter 会发生什么。

    这意味着document.newPage() 被触发之前 p1 被渲染,而不是p1p2 之间

    要解决这个问题,你需要使用Chunk.NEXTPAGE 对象:

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

    那个特殊的Chunk 对象现在是chapter 对象的一部分,并且将在p1p2 之间触发一个新页面。

    【讨论】:

    • 我明白了!非常感谢您的解释和sn-p
    • 我们可以将Chunk.NEXTPAGE 设为横向吗?是否可以在新页面中旋转页面?
    • @Blaise 不,我认为这在 iText 5 或更早版本中是不可能的。我们在 iText 7 中修复了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多