2017-01-06 3 views
0

Итак, я создаю группу радиостанций, используя этот PdfFormField.createRadioButton(), а затем вызывает setFieldName().Как извлечь полевое имя PdfFormField из PdfAnnotation

Однако в PdfAnnotation не отображаются ключи, в которых хранится имя поля. Я посмотрел на другие словари внутри PdfAnnotation, но не смог найти их.

reader.getAcroFields(). GetFields(). KeySet() перечисляет имена полей полей формы, но я хочу спросить, есть ли какой-либо способ через PdfAnnotation?

Я попытался поместить пользовательское PdfName внутри объекта группы радио, но он не отображается в словаре PdfAnnotation.

ответ

3

Вы вводите в заблуждение концепцию аннотации (аннотацию ссылки, аннотацию прикрепления файла, аннотацию виджета ...) и поле формы (текстовое поле, поле выбора, поле кнопки, поле подписи).

В iText 5 аннотации обрабатываются в классе с именем PdfAnnotation; поля формы обрабатываются в классе с именем PdfFormField. Вы пытаетесь сделать что-то конкретное для PdfFormField, используя класс PdfAnnotation. Это неверно.

Я понимаю корень путаницы: каждый видимого поля формы соответствует по крайней мере один виджетам аннотации. Большинство полей формы видны соответствуют ровно один аннотация виджета. Вот почему мы сделали дизайн в iText 5, чтобы PdfFormField расширяет PdfAnnotation.

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

На практике вы найдете PDF-словари в формате PDF, которые объединяют записи, типичные для словаря аннотаций виджета и полевого словаря. (Это также объясняет, почему в iText существует метод getMerged(): этот метод дает вам объединенные словарные объекты.)

Надеюсь, это уже объясняет часть вашей проблемы. У вас тоже есть другая проблема, но я не понимаю, что вы хотите сделать. Просьба пояснить, используя ссылки на ISO-32000-1, чтобы люди могли понять, какую техническую функцию вы пытаетесь реализовать.

+0

Привет, Бруно, спасибо за разъяснение. Когда я создал флажки с помощью RadioCheckField, я не мог найти имя поля в словаре аннотации, но я смог найти его в AcroFields. Кажется, я нашел то, что искал. спасибо – chitgoks