Automate Form Filling in PDFs Using iText 5 Library in Java

Automate Form Filling in PDFs Using iText 5 Library in Java
Photo by GoodNotes 5 / Unsplash

Have you ever needed to automatically fill out PDF forms with preset data using a Java application? In this post, we'll explore how to achieve this using the iText 5 library. iText is a popular Java library for creating and manipulating PDF documents, including form filling. We'll walk you through the steps to load an existing PDF form, access form fields, set values, and even flatten the form to make it read-only. Let's get started.

Step 1: Add iText 5 Library

Before we begin, ensure that you have the iText 5 library added to your Java project. You can download the iText 5 JAR files from the official website or use dependency management tools like Maven or Gradle.

Step 2: Load the PDF Form

Load the existing PDF form that you want to fill. You can do this using the PdfReader class in iText:

PdfReader reader = new PdfReader("path/to/your/form.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("path/to/output.pdf"));

Step 3: Access Form Fields

To access form fields in the PDF, you can use the AcroFields class. Set values in the form fields using the setField method:

AcroFields form = stamper.getAcroFields();
form.setField("FieldName1", "Value1");
form.setField("FieldName2", "Value2");
// Set values for other form fields as needed

Replace "FieldName1", "FieldName2", and "Value1", "Value2" with the actual field names and values you want to set.

Step 4: Flatten the Form (Optional)

If you want to make the form read-only after filling it, you can use the setFormFlattening(true) method on the PdfStamper object:

stamper.setFormFlattening(true);

Step 5: Close and Save the PDF

After filling the form fields, close the PdfStamper and save the PDF:

stamper.close();

Your filled PDF will be saved as specified in the output path.

Here's a complete example:

import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.AcroFields;

import java.io.FileOutputStream;

public class PdfFormFiller {
    public static void main(String[] args) {
        try {
            PdfReader reader = new PdfReader("path/to/your/form.pdf");
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("path/to/output.pdf"));

            AcroFields form = stamper.getAcroFields();
            form.setField("FieldName1", "Value1");
            form.setField("FieldName2", "Value2");
            // Set values for other form fields as needed

            stamper.setFormFlattening(true);

            stamper.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

This process allows you to automate form filling in PDFs, making it convenient for applications that require bulk data entry or report generation. Just replace file paths and field names/values as needed, and you're ready to go!

Subscribe to Post, Code and Quiet Time.

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe