【发布时间】:2020-11-23 10:03:00
【问题描述】:
我在检索 PDFBox 中复选框的导出值时遇到问题。我正在使用 PDFBox v2.0.21。我需要导出值,因为我需要知道每个复选框字段在另一个应用程序中映射到什么。
复选框的部分名称相同,但导出值不同。一个示例 pdf 是 here。
如果我在该字段上调用“getExportValues”,我将获得复选框组 ["a","b"] 的所有可用复选框导出选项。例如((PDCheckBox) field).getExportValues(); //returns ["a","b"] 有没有办法判断哪个导出值属于当前字段?
如果我调用“getOnValue”,它会返回“0”(它会为所有复选框字段执行此操作)。例如onValue = ((PDCheckBox) field).getOnValue(); //returns "0" 无论我查看哪个字段,它都会返回“0”。
如果我调用field.check(),它会抛出“java.lang.IllegalArgumentException”异常(我认为这是因为它使用“0”而不是“a”或“b”。
如果我用“a”或“b”调用field.setValue(),它们都会在该领域取得成功,因此尚不清楚要尝试哪些其他选项。我曾尝试过这种方法,希望能够确定我当前正在查询的字段属于哪个导出值。
如果您对上述内容有任何见解,请告诉我。
更新:经过进一步调试,看起来每个字段都有 2 个与之关联的小部件(因此,如果字段复选框具有相同的名称,则它具有多个小部件)。在 pdf 中添加额外的复选框会产生与每个字段关联的 3 个小部件。如果我使用field.getWidgets().get(1).dictionary.getCOSObject(COSName.AP).getDictionaryObject(COSName.N) 并获得不是“关闭”的键(如here 所述),那么它返回“1”,我假设是该小部件导出值的索引(来自getExportValues) 但是我没有办法确定哪个小部件属于我当前正在查看的字段。
谢谢 抢
【问题讨论】: