在pdfbox中检索复选框的导出值时遇到问题。我正在使用pdfbox v2.0.21。我需要导出值,因为我需要知道每个复选框字段在另一个应用程序中Map到什么。
复选框具有相同的部分名称,但导出值不同。这里是一个pdf示例。
如果我在字段上调用“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”)。
如果我打电话 field.setValue()
无论是“a”还是“b”,他们都能在这个领域取得成功,所以还不清楚还有什么其他的选择可以尝试。我尝试了这种方法,希望能够确定哪些出口值属于我当前查询的字段。
请让我知道,如果你对上述任何见解。
更新:在进一步调试之后,看起来每个字段都有2个与之相关联的小部件(因此,如果field checkbox具有相同的名称,那么它就有多个小部件)。在pdf中添加额外的复选框会产生与每个字段相关联的3个小部件。如果我使用 field.getWidgets().get(1).dictionary.getCOSObject(COSName.AP).getDictionaryObject(COSName.N)
得到不为“off”的键(如这里所述),然后返回“1”,我假设它是widgets导出值(来自getexportvalues)的索引,但是我没有办法确定哪个widget属于我当前正在查看的字段。
谢谢,罗伯
1条答案
按热度按时间xu3bshqb1#
在进一步调试时,我发现如果checkbox字段共享相同的值,那么只有1个adobe字段与之关联。
为了得到导出值,我循环遍历每个字段的小部件,并使用下面的代码得到每个小部件的“onvalue”。