java - 如何使用 pdfbox 检索 acrofield 的全名

标签 java pdfbox

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

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();
}

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

正如我所看到的,PDFBox 处理诸如 PDNonTerminalField 之类的字段,是否有一种简单的方法来获取最新的子项并对其进行检查?

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

java.util.NoSuchElementException: No value present

最佳答案

getFields 仅返回根字段。更好的解决方案是调用 getFieldIterator()。或者,如果您有全名,则只需调用 getField(completelyQualifiedName)

关于java - 如何使用 pdfbox 检索 acrofield 的全名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48074644/

相关文章:

java - Java 中包含命名空间的 xpath 问题(Dom 解析器)

java - PDFbox 中的计算字符串宽度似乎只计算字符数?

android - 适用于 Android 的 PDF 库 - PDFBox?

java - PDFBox : Extraction of data from table

java - Tapestry 循环遍历 hashmap

java - HashMap 中 NULL 键的哈希码

java - 无法引用不同方法中定义的内部类内的非最终变量 lblNewLabel

pdf - 如何全局替换PDF中的字体

java - 使用 PDFBox 替换 PDF 页面

java - 如何根据元素的字段值从数组中删除元素? (Spring-Boot,响应式(Reactive) MongoDB)