Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-2965

NPE in PDAcroForm.getField() if the /Fields entry is missing

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.8.10, 2.0.0
    • 1.8.11, 2.0.0
    • AcroForm
    • None

    Description

      Form the users mailing list

      I get a lot of weird documents. When I try to set a particular field value, some of them throw NullPointerExceptions from line PDAcroForm.getField(), line 291:

      287: COSArray fields =
      288: (COSArray) acroForm.getDictionaryObject(
      289: COSName.getPDFName("Fields"));
      290:
      291: for (int i = 0; i < fields.size() && retval == null; i++)
      292:{

      To avoid this, at first I was calling PDAcroForm.getFields() and checking that to see if that was NULL but I realized that it would usually create a new fields array to return which seemed wasteful.

      Is the most efficient way to avoid this to first call:
      COSArray fields = (COSArray) acroForm.getDictionaryObject( COSName.getPDFName("Fields"));
      myself and check if that is NULL?

      Secondary Question:
      The method PDAcroForm.getFields() does a not-NULL check of fields before calling fields.size().
      Is there a reason that this check is not performed in getField()?

      Attachments

        Activity

          People

            msahyoun Maruan Sahyoun
            msahyoun Maruan Sahyoun
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: