从 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);
.
将 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);
在
处返回 nullfinal COSDictionary acroForm = (COSDictionary) root.getDictionaryObject(COSName.ACRO_FORM);
InputStream 有效,第一行有效。
问题已解决。
如果有人真的有类似的问题:
AcroForm 只有在 pdf 中有交互式表单时才存在。
在我的例子中,未签名的 PDF 没有 AcroForms,所以方法 returns 正确
null
并抛出
NullPointerException
在
final COSArray fields = (COSArray) acroForm.getDictionaryObject(COSName.FIELDS);
.