从 PDDocument 获取 acroForms

Getting acroForms from PDDocument

将 pdfbox 从版本 1.8.6 迁移到 2.0.12 后,以下代码

    document = PDDocument.load(pdfDocumentAsInputStream);
    final COSDictionary trailer = document.getDocument().getTrailer();
    final COSDictionary root = (COSDictionary) trailer.getDictionaryObject(COSName.ROOT);
    final COSDictionary acroForm = (COSDictionary) root.getDictionaryObject(COSName.ACRO_FORM);
    final COSArray fields = (COSArray) acroForm.getDictionaryObject(COSName.FIELDS);

处返回 null
final COSDictionary acroForm = (COSDictionary) root.getDictionaryObject(COSName.ACRO_FORM);

InputStream 有效,第一行有效。

问题已解决。

如果有人真的有类似的问题:

AcroForm 只有在 pdf 中有交互式表单时才存在。

在我的例子中,未签名的 PDF 没有 AcroForms,所以方法 returns 正确
null
并抛出
NullPointerException
final COSArray fields = (COSArray) acroForm.getDictionaryObject(COSName.FIELDS);.