getting null when call acroform.getFields() using

2019-07-04 04:53发布

问题:

I tried to get All the fields available in pdf form but I'm encountering a NullPointerException when calling acroform.getFields() using PDFBox.

Sample:

pdDoc = PDDocument.load(fileName);
PDAcroForm form = pdDoc.getDocumentCatalog().getAcroForm();
if(form!=null)
{
    List<PDField> field = form.getFields(); //here I am getting null pointer exception
}

回答1:

this is because your pdf if not contain any acroform



回答2:

form is not null, but that doesn't mean it is not empty.

Check this instead:

if (form.getDocument()!=null)

or

if (form.getFields()!=null)

If those are null, then the error comes from elsewhere. Probably from the document loading code ; )



回答3:

I had this same error, and it turned out I was merely assuming all PDFs in our collection from this particular screen would have fields. It turned out that was not the case and that we had clients with certain pdfs that had no fields at all. So just add a null check to make sure AcroForm is not null and you should be good to go.