Fill a Form Field

Form fields within a PDF are defined as part of the AcroForm entry within the PDF's document catalog. Form there individual fields can be accessed. Fields might be organized in a tree structure so it might be neccessary to walk through the tree to get an individual field.

Load the PDF document.

:::java
// load the document
PDDocument pdfDocument = PDDocument.loadNonSeq(new File(... ), null);

Get the docoument catalog and the AcroForm which might be contained within.

:::java
// get the document catalog
PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();

Retrieve an individual field and set its value.

:::java
// as there might not be an AcroForm entry a null check is necessary
if (acroForm != null)
{
    PDField field = (PDField) acroForm.getField( "fieldName" );
    field.setValue("new field value");
}

If a field is nested within the form tree a fully qualified name might be provided to access the field.

:::java
// as there might not be an AcroForm entry a null check is neccessary
if (acroForm != null)
{
    PDField field = (PDField) acroForm.getField( "fieldsParentName.fieldName" );
    field.setValue("new field value");
}

Save and close the filled out form.

:::java
doc.save(filledForm);
doc.close();