从PDDocument获取acroForms

时间:2018-10-11 12:05:34

标签: pdfbox

由于将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有效,第一行有效。

1 个答案:

答案 0 :(得分:2)

问题解决了。

如果某人实际上有类似的问题:

只有在pdf中存在交互形式时,AcroForm才存在。

对于我而言,未签名的PDF没有AcroForm,因此该方法可以正确返回
null
并抛出
NullPointerException
final COSArray fields = (COSArray) acroForm.getDictionaryObject(COSName.FIELDS);