如何使用pdfbox检索acrofield的全名

问题描述 投票:1回答:1

我有一个带有acroform字段的pdf,现在我需要找到相应的PDField Objects。为此,我使用此代码

public PDField getPDFieldWithName(final String fieldname){
    PDDocumentCatalog docCatalog = pdDocument.getDocumentCatalog();
    PDAcroForm acroForm = docCatalog.getAcroForm();
    return acroForm.getFields().stream()
                        .filter( x -> x.getPartialName().equalsIgnoreCase(fieldname))
                        .findFirst()
                        .get();
}

这适用于普通字段,但如果pdfs上的字段用点分组并且使用其中一个字段,则它不起作用。

我可以看到PDFBox处理像PDNonTerminalField这样的字段,是否有一种简单的方法来获取最新的孩子并检查它?

在我的表单上有一个名为Test.foo.bar的字段,当我使用上面的方法搜索名称为“Test.foo.bar”的字段时,它找不到它

java.util.NoSuchElementException: No value present
java pdfbox
1个回答
1
投票

getFields只返回根字段。更好的解决方案是打电话给getFieldIterator()。或者如果您有全名,只需致电getField(fullyQualifiedName)

© www.soinside.com 2019 - 2024. All rights reserved.