Как проверить, установлен ли переключатель или флажок с помощью PDFBox в Java? - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь создать программу, которая читает форму PDF (вопросы и ответы) и на данный момент просто выводит все обратно на экран. Моя проблема в том, что когда я использую getValue для переключателей или флажков, он всегда возвращает пустую строку, независимо от того, отмечена она или нет. Есть ли другой метод, который я должен использовать? Вот мой код:

public static void listFields(PDDocument doc) throws Exception
{
    PDDocumentCatalog catalog = doc.getDocumentCatalog();
    PDAcroForm form = catalog.getAcroForm();
    List<PDField> fields = form.getFields();

    for(PDField field: fields)
    {
        String name = field.getFullyQualifiedName();
        if (field instanceof PDTextField || field instanceof PDComboBox)
        {
             Object value = field.getValueAsString();
             System.out.print(name);
             System.out.print(" = ");
             System.out.print(value);
             System.out.println();
        }
        else if (field instanceof PDPushButton)
            ;
        else
        {
            if (field instanceof PDRadioButton)
            {
                PDRadioButton radioButton = (PDRadioButton)form.getField(name);
                String value=radioButton.getValue();
                System.out.print(name);
                System.out.print(" = ");
                System.out.print(value);
                System.out.println();
                /*List<String> exportValues = ((PDRadioButton) field).getSelectedExportValues();
                for (String string : exportValues)
                {
                    name = field.getFullyQualifiedName();
                    System.out.print(name);
                    System.out.print(" = ");
                    System.out.print(string);
                    System.out.println();
                } */
            }
            else if (field instanceof PDCheckBox)
            {
                PDButton box = (PDButton)field;
                String value = box.getValue();
                System.out.print(name);
                System.out.print(" = ");
                System.out.print(value);
                System.out.println();
            }

        }
    }
}

public static void main(String[] args) throws Exception {
    File file = new File("C:\\Users\\bobdu\\Documents\\SHIP_CCF_LastName_FirstName_YYYYMMDD_v1_Sample.pdf");
    PDDocument doc = PDDocument.load(file);
    listFields(doc);
}

Закомментированный раздел для радиокнопок - это что-то другое, я пытался увидеть, изменит ли это что-нибудь. Комментируемая версия и версия, которая выполняется, выдают один и тот же результат. Заранее спасибо за помощь.

...