How do I create Roman or Greek numeral list in iText?

To create a Roman or Greek numeral list we can use special implementation list in the iText. The com.itextpdf.text.RomanList represent a Roman numeral list while the com.itextpdf.text.GreekList represent a Greek numeral list.

The list item can be created using the com.itextpdf.text.ListItem class. Let’s check out an example below:

package org.kodejava.itextpdf;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class RomanGreekListDemo {
    public static void main(String[] args) {
        Document doc = new Document();
        try {
            PdfWriter.getInstance(doc, new FileOutputStream("RomanGreekListDemo.pdf"));
            doc.open();

            List roman = new RomanList();
            roman.add(new ListItem("Item 1"));
            roman.add(new ListItem("Item 2"));
            roman.add(new ListItem("Item 3"));
            doc.add(roman);

            List greek = new GreekList();
            greek.add(new ListItem("Item 1"));
            greek.add(new ListItem("Item 2"));
            greek.add(new ListItem("Item 3"));
            doc.add(greek);
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            doc.close();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I create internal Anchor in iText?

The com.itextpdf.text.Anchor class in iText can be used to create an internal link or external link in a PDF document. To create an internal link we must format the anchor reference using the # + referenceName. On the other side the target anchor should be named using the same reference name excluding the # symbol.

To set the reference we use the setReference() method. To define the target anchor we can name the anchor using the setName() method.

package org.kodejava.itextpdf;

import com.itextpdf.text.Anchor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class AnchorInternalDemo {
    public static void main(String[] args) {
        Document document = new Document();
        try {
            PdfWriter.getInstance(document, new FileOutputStream("AnchorInternal.pdf"));
            document.open();

            Anchor anchor = new Anchor("[Continue Here]");
            anchor.setReference("#targetLink");
            Paragraph para1 = new Paragraph("The quick brown fox jumps over the lazy dog. ");
            para1.add(anchor);
            document.add(para1);

            Anchor target = new Anchor("The quick onyx goblin jumps over the lazy dwarf.");
            anchor.setName("targetLink");
            Paragraph para2 = new Paragraph();
            para2.setSpacingBefore(150);
            para2.add(target);
            document.add(para2);

            document.close();
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I create Chapter in iText?

This brief example show you how to create chapter in the PDF document using iText. To create chapter we use the com.itextpdf.text.Chapter class. We can pass the chapter title and the chapter number as the parameter for the Chapter constructor.

To create a section for the chapter we can use the com.itextpdf.text.Section class. To add a section we call the Chapter.addSection() method of the Chapter object. Let’s look at the example below:

package org.kodejava.itextpdf;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ChapterDemo {
    public static void main(String[] args) {
        // Creates a new document
        Document document = new Document();
        try {
            // Prepare PDF writer and open the document.
            PdfWriter.getInstance(document, new FileOutputStream("ChapterDemo.pdf"));
            document.open();

            // Creates a new Chapter object
            Chapter chapter = new Chapter("Chapter One", 1);

            // Add sections to the chapter
            Section section = chapter.addSection("This is Section 1", 2);
            Paragraph paragraph = new Paragraph("This is the paragraph of the Section 1");
            section.add(paragraph);

            chapter.addSection("This is Section 2", 2);

            document.add(chapter);
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I create Anchor or link in iText?

This example show you how to use the com.itextpdf.text.Anchor class to create an external link in the PDF document. You can create an instance of Anchor with a phrase of string and set its reference, in this case a website URL, by calling the setReference() method of this object.

package org.kodejava.itextpdf;

import com.itextpdf.text.Anchor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class AnchorDemo {
    public static void main(String[] args) {
        Document doc = new Document();
        try {
            PdfWriter.getInstance(doc, new FileOutputStream("AnchorDemo.pdf"));
            doc.open();

            String content = "You can learn Java programming on the " +
                    "following website: ";
            Paragraph paragraph = new Paragraph(content);

            // Creates a new anchor that link to external website
            // and add this anchor to the paragraph.
            Anchor anchor = new Anchor("Learn Java by Examples");
            anchor.setReference("https://kodejava.org");
            paragraph.add(anchor);

            doc.add(paragraph);
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            doc.close();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I set Paragraph indentation in iText?

To set paragraph indentation in the iText Paragraph object we can use the setFirstLineIndent(), setIndentationLeft() and setIndentationRight(). These methods accept a float value as a parameter.

The setFirstLineIndent() method set the first line indentation of a paragraph, while the setIndentationLeft() and setIndentationRight() methods set the left and the right indent of the paragraph. Let see an example below:

package org.kodejava.itextpdf;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ParagraphIndentationDemo {
    private static final String CONTENT = """
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, \
            sed do eiusmod tempor incididunt ut labore et dolore magna \
            aliqua. Ut enim ad minim veniam, quis nostrud exercitation \
            ullamco laboris nisi ut aliquip ex ea commodo consequat. \
            Duis aute irure dolor in  reprehenderit in voluptate velit \
            esse cillum dolore eu fugiat nulla pariatur. Excepteur sint \
            occaecat cupidatat non proident, sunt in culpa qui officia \
            deserunt mollit anim id est laborum.
            """;

    public static void main(String[] args) {
        Document document = new Document();
        try {
            PdfWriter.getInstance(document,
                    new FileOutputStream("ParaIndentation.pdf"));
            document.open();

            Paragraph paragraph = new Paragraph();
            paragraph.add(new Chunk(ParagraphIndentationDemo.CONTENT));

            // Set paragraph's first line indent
            paragraph.setFirstLineIndent(75);

            // Set paragraph's left side indent
            paragraph.setIndentationLeft(50);

            // Set paragraph's right side indent
            paragraph.setIndentationRight(25);
            document.add(paragraph);
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I set Paragraph alignment in iText?

To set the alignment of a paragraph object we can use the Paragraph.setAlignment() method. We can pass constants such as Paragraph.ALIGN_LEFT, Paragraph.ALIGN_CENTER, Paragraph.ALIGN_RIGHTto the setAlignment() method.

package org.kodejava.itextpdf;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ParagraphAlignment {
    private static final String CONTENT = """
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, \
            sed do eiusmod tempor incididunt ut labore et dolore magna \
            aliqua. Ut enim ad minim veniam, quis nostrud exercitation \
            ullamco laboris nisi ut aliquip ex ea commodo consequat. \
            Duis aute irure dolor in  reprehenderit in voluptate velit \
            esse cillum dolore eu fugiat nulla pariatur. Excepteur sint \
            occaecat cupidatat non proident, sunt in culpa qui officia \
            deserunt mollit anim id est laborum.
            """;

    public static void main(String[] args) {
        Document document = new Document();
        try {
            PdfWriter.getInstance(document,
                    new FileOutputStream("ParaAlign.pdf"));
            document.open();

            // Creates a check for the paragraphs contents
            Chunk chunk = new Chunk(ParagraphAlignment.CONTENT);

            // Creates paragraphs and set the alignment of the paragraph.
            // We use the Paragraph.ALIGN_LEFT, Paragraph.ALIGN_CENTER
            // and Paragraph.ALIGN_RIGHT
            Paragraph para1 = new Paragraph(chunk);
            para1.setAlignment(Paragraph.ALIGN_LEFT);
            para1.setSpacingAfter(50);
            document.add(para1);

            Paragraph para2 = new Paragraph(chunk);
            para2.setAlignment(Paragraph.ALIGN_CENTER);
            para2.setSpacingAfter(50);
            document.add(para2);

            Paragraph para3 = new Paragraph(chunk);
            para3.setAlignment(Paragraph.ALIGN_RIGHT);
            document.add(para3);

            document.close();
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I set Paragraph line space in iText?

To set the line spacing of a paragraph in iText can be done by passing the line space / leading argument in the Paragraph constructor. In the example below we set the line space to 32. We can also set the space between paragraph by calling the setSpacingBefore() and setSpacingAfter() methods of this object.

package org.kodejava.itextpdf;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ParagraphLineSpaceDemo {
    public static void main(String[] args) {
        Document doc = new Document();

        try {
            FileOutputStream fos = new FileOutputStream("ParagraphLineSpace.pdf");
            PdfWriter.getInstance(doc, fos);
            doc.open();

            String content = "The quick brown fox jumps over the lazy dog";

            // Setting paragraph line spacing to 32
            Paragraph para1 = new Paragraph(32);

            // Setting the space before and after the paragraph
            para1.setSpacingBefore(50);
            para1.setSpacingAfter(50);
            for (int i = 0; i < 10; i++) {
                para1.add(new Chunk(content));
            }
            doc.add(para1);

            Paragraph para2 = new Paragraph();
            for (int i = 0; i < 10; i++) {
                para2.add(new Chunk(content));
            }
            doc.add(para2);

            doc.close();
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I use iText Paragraph class?

The com.itextpdf.text.Paragraph class represent a paragraph in PDF document. The following example show you how to create a simple paragraph. First we create a Paragraph object and then add some texts into it using the Chunk object.

package org.kodejava.itextpdf;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ParagraphDemo {
    public static void main(String[] args) {
        Document doc = new Document();
        try {
            FileOutputStream fos = new FileOutputStream("ParagraphDemo.pdf");
            PdfWriter.getInstance(doc, fos);
            doc.open();

            String content = "The quick brown fox jumps over the lazy dog";
            Paragraph paragraph = new Paragraph();
            for (int i = 0; i < 20; i++) {
                Chunk chunk = new Chunk(content);
                paragraph.add(chunk);
            }

            doc.add(paragraph);
            doc.close();
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I customize the Phrase object in iText?

This example shows how to customize the iText Phrase object. We can change the default line spacing of the Phrase object by passing a float parameter. We can also use the setLeading() method.

We can also set the default font for the Phrase so that every Chunk added to this object will have the same font. If you want the chunk to have a different font, you can set it in the chunk object itself.

Let’s see an example below:

package org.kodejava.itextpdf;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class PhraseCustomizeDemo {
    public static void main(String[] args) {
        Document document = new Document();

        try {
            PdfWriter.getInstance(document,
                    new FileOutputStream("PhraseCustomizeDemo.pdf"));
            document.open();

            // Creates a phrase object, sets leading to 32 and
            // adds some chunks.
            Phrase phrase1 = new Phrase(20);

            // Set main font information of the Phrase object.
            phrase1.setFont(FontFactory.getFont(FontFactory.COURIER, 12,
                    Font.BOLD, new BaseColor(0, 0, 255)));

            for (int i = 0; i < 50; i++) {
                phrase1.add(new Chunk("Hello "));
            }

            // Add chunk to the phrase and replace the font information
            // for this chunk.
            phrase1.add(new Chunk("Hello",
                    FontFactory.getFont(FontFactory.HELVETICA)));
            document.add(phrase1);

            // Creates a phrase by defining the leading and a string.
            Phrase phrase2 = new Phrase(40, "Hello World!!!");
            document.add(phrase2);

            // Creates a phrase by defining the leading and add a chunk
            // into the phrase. The chunk has it own font face, font
            // style and color.
            Phrase phrase3 = new Phrase(50,
                    new Chunk("Hello I am BIG", FontFactory.getFont(
                            FontFactory.HELVETICA, 40,
                            Font.ITALIC, new BaseColor(255, 0, 0))));
            document.add(phrase3);
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central

How do I use iText Phrase class?

The com.itextpdf.text.Phrase represent a phrase of text in the Document object. The Phrase object knows how to add spacing between lines of text. So if we add some phrase into the document it will start on a new line when it reaches the right edge of the document. The default leading / line spacing of a Phrase object is 16.

package org.kodejava.itextpdf;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class PhraseDemo {
    public static void main(String[] args) {
        // Creates an instance of Document.
        Document document = new Document();
        try {
            // Write the pdf document into a file using the PdfWriter
            // and passes the document object and a FileOutputStream.
            PdfWriter.getInstance(document, new FileOutputStream("PhraseDemo.pdf"));
            document.open();

            // Add a some Phrase element into the document.
            document.add(new Phrase("This is the first text "));
            document.add(new Phrase("This is the second text "));
            document.add(new Phrase("This is the third text "));
            document.add(new Phrase("This is the fourth text "));
            document.add(new Phrase("This is the fifth text "));
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }
}

Maven Dependencies

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Maven Central