0
PdfReader reader = new PdfReader(pdfbytes);
AcroFields acroFields = reader.getAcroFields();
Set <String> fields = acroFields.getFields().keySet();
for (String field:fields) {
    if (AcroFields.FIELD_TYPE_RADIOBUTTON == acroFields.getFieldType(field)) {
        String fieldId = acroFields.getField(field);
        List<AcroFields.FieldPosition> positions = acroFields.getFieldPostions(field);
        System.out.println("List size : " + positions.size());
        for (int i = 0; i < positions.size(); i++) {
            Rectangle rect = acroFields.getFieldPositions(field).get(i).position;
        }
    }
}

我能够找到并迭代无线电组下的位置列表。

我想知道为了找到它的绝对位置而选择的单选按钮的索引。

4

1 回答 1

0

以下代码应为您提供指导。请注意,可能没有选中单选按钮。您还必须进行错误处理等...

for (int i = 0; i < positions.size(); i++) {

    Item fieldItem = acroFields.getFieldItem(field);
    PdfDictionary dict = entry.getValue().getWidget(i);
    PdfName as = dict.getAsName(PdfName.AS);
    if(as==null){
      //handle/throw error if AS key is not set and there are one or more  subdictionaries!
    }
    String asValue = PdfName.decodeName(as.toString());
    if("Off".equalsIgnoreCase(asValue)){
       System.out.println("not checked");
    } 
    else{
       System.out.println("Checked");
       //do what you need to do
    }
}
于 2020-06-23T06:08:47.030 回答