如何使用pdfbox检索acrofield的全名

时间:2018-01-03 09:32:24

标签: java pdfbox

我有一个带有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

1 个答案:

答案 0 :(得分:1)

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