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();