How do I add a new page to a Document with iText 8?

In iText 8, you can use the AreaBreak class to add a new page to a Document. An AreaBreak is used to start a new area in the document. This can be compared to a page break in word processing software, but in iText, it’s a bit more flexible.

You can use AreaBreak to create different layout areas in the same page. For example, it can be used to separate a chapter or section in your document into two columns. You can also use an AreaBreak to create a new page, too.

Here’s an example of how to do it:

package org.kodejava.itext;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.AreaBreak;
import com.itextpdf.layout.element.Paragraph;

public class AreaBreakExample {
    public static void main(String[] args) throws Exception {
        PdfWriter writer = new PdfWriter("output.pdf");
        PdfDocument pdf = new PdfDocument(writer);

        // Create a document object
        try (Document document = new Document(pdf)) {
            // Add a new paragraph to the document
            document.add(new Paragraph("This is some content on Page 1"));

            // Add an area break (the new page starts here)
            document.add(new AreaBreak());

            // Add another paragraph to the document (on a new page)
            document.add(new Paragraph("This is some content on Page 2"));
        }
    }
}

In this example, the AreaBreak creates a new page before adding the second paragraph. As a result, “This is some content on Page 1” appears on the first page, while “This is some content on Page 2” appears on the second page.

While both AreaBreak and PdfDocument‘s addNewPage() method can be used to add a new page in a PDF document, they work in slightly different ways.

  • AreaBreak: This is typically used in the context of the iText Document abstraction. When you insert an AreaBreak, it tells the layout mechanism that you want to start laying out new elements in a new region (which could be a new page, or a new column, for example). This is particularly useful when adding elements like texts, images, tables, etc. sequentially to a document, and you want control over page breaks.
  • addNewPage(): This is a lower-level operation that allows you to directly interact with the PdfDocument object. This method is used when you’re not using the Document abstraction and are working directly with the PdfDocument. It provides more control over creating and customizing pages, but requires a more detailed understanding of the PDF structure.

In short, AreaBreak is generally more high-level and is useful when laying out elements via the Document abstraction, while addNewPage() is a lower-level method that offers more control but requires more detailed knowledge about the structure of PDF files.

It’s important to note that the use of one over the other depends on the specific requirements and context of your project.

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-core</artifactId>
    <version>8.0.2</version>
    <type>pom</type>
</dependency>

Maven Central

Wayan

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.