DEV Community

Cover image for How to create and fill out your own PDF form with Java
Sandro Giacomozzi
Sandro Giacomozzi

Posted on

23 6

How to create and fill out your own PDF form with Java

Introduction

In this tutorial, you will learn how to populate a PDF document with Java using the PDFBox library. In addition you will see how to create your own forms or add editable fields to an existing PDF document.

Creating a simple form

To create a form, let's use LibreOffice Draw.

Display the form toolbar. View Menu > Toolbars > Form Controls.

In a blank document, enter two text fields:

Display the properties of the text field:

Rename the fields to 'txt_1' and 'txt_2' respectively. Also leave the 'Read-only' property as 'Yes'.

Export the document as PDF. Mine is like '/tmp/pdf-java.pdf'

My template looked like this:

Populating the PDF through Java

Create a new maven Java project and add the dependency below:

<dependency>
  <groupId>org.apache.pdfbox</groupId>
  <artifactId>pdfbox</artifactId>
  <version>2.0.16</version>
</dependency>
Enter fullscreen mode Exit fullscreen mode

Create a Java class with the code below:

    public static void main(String[] args) {
        try {
            PDDocument pDDocument = PDDocument.load(new File("/tmp/pdf-java.pdf"));
            PDAcroForm pDAcroForm = pDDocument.getDocumentCatalog().getAcroForm();
            PDField field = pDAcroForm.getField("txt_1");
            field.setValue("This is a first field printed by Java");
            field = pDAcroForm.getField("txt_2");
            field.setValue("This is a second field printed by Java");
            pDDocument.save("/tmp/pdf-java-output.pdf");
            pDDocument.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Enter fullscreen mode Exit fullscreen mode

Run the program and see the result:

Remember, the ending file was saved to: "/tmp/pdf-java-output.pdf".

The complete source code it's on github:

https://github.com/sandrogiacom/pdf-java

Conclusion

In this short tutorial, we learned how to populate a PDF from a PDF template created with LibreOffice Draw. Use your creativity to create beautiful templates, do automation, create batch files and more.

Leave in the comments what your use case would be.

See you soon!

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay