Выяснение обязательных полей для заполнения в pdf файле

Я начинаю с новой функциональности в моем приложении для Android, которая поможет заполнить определенные формы PDF.

Я обнаружил, что лучшим решением будет использование библиотеки iText.

Я могу прочитать файл и прочитать AcroFields из документа, но есть ли возможность узнать, что конкретное поле помечено как обязательное?

Я пытался найти эту опцию в документации API и в Интернете, но не было ничего, что могло бы помочь решить эту проблему.

2 ответа

Решение

Пожалуйста, ознакомьтесь с разделом 13.3.4 моей книги, озаглавленной "Пересмотр AcroForms". В листинге 13.15 показан фрагмент кода из примера InspectForm, который проверяет, является ли поле паролем или многострочным полем.

С некоторыми незначительными изменениями вы можете адаптировать этот пример для проверки обязательных полей:

for (Map.Entry<String,AcroFields.Item> entry : fields.entrySet()) {
    out.write(entry.getKey());
    item = entry.getValue();
    dict = item.getMerged(0);
    flags = dict.getAsNumber(PdfName.FF);
    if (flags != null && (flags.intValue() & BaseField.REQUIRED) > 0)
        out.write(" -> required\n");
}

Проверить обязательные поля без цикла для itext5.

        String src = "yourpath/pdf1.pdf";
        String dest = "yourpath/pdf2.pdf";

        PdfReader reader = new PdfReader(src);
        PdfStamper stamper = new PdfStamper(this.reader, new FileOutputStream(dest));

        AcroFields form = this.stamper.getAcroFields();
        Map<String,AcroFields.Item> fields = form.getFields();
        AcroFields.Item item;
        PdfDictionary dict;
        PdfNumber flags;
        item=fields.get("fieldName");
        dict = item.getMerged(0);
        flags = dict.getAsNumber(PdfName.FF);
        if (flags != null && (flags.intValue() & BaseField.REQUIRED) > 0) 
        {
                System.out.println("flag  has set");
        }   
Другие вопросы по тегам