2015-07-10 3 views
0

Я использую iText для анализа формы PDF и позволяю пользователю изменять имена полей и другие существующие поля. Я могу показать возможные значения для флажка, вызвав getAppearanceStates (имя поля) на AcroFields. Но я не могу найти способ изменить состояние внешнего вида.iText change the checkboxes state state

Кто-нибудь когда-либо делал это или знает, как это сделать?

Пример: У меня есть флажок Поле с именем «флажок», а состояния появления «да». Я хочу, чтобы он был включен.

acroFields.setField("checkbox", "on", "on") 

не имеет никакого влияния, и установка свойства также не является правильной.

+1

Вы пытались 'setField()' или я неверно истолковываю вопрос? –

+0

Я сделал, см. Мой отредактированный вопрос – user5103374

ответ

0

Мне удалось решить проблему с помощью PdfDictionary. Мое решение выглядит следующим образом:

PdfDictionary appearanceDictionary = (PdfDictionary) acroFields.getFieldItem("checkbox").getWidget(0).get(PdfName.AP); 
PdfDictionary appearanceStateDictionary = (PdfDictionary) appearanceDictionary.get(PdfName.N); 
PdfName oldAppearanceState = new PdfName("yes); 
PdfName newAppearanceState = new PdfName("on"); 

PdfObject referenceOnAppearanceState = appearanceStateDictionary.get(oldAppearanceState); 
appearanceStateDictionary.remove(oldAppearanceState); 
appearanceStateDictionary.put(newAppearanceState, referenceOnAppearanceState); 

Я был не совсем уверен, что спрятался за ссылки referenceOnAppearanceState, но я не хочу, чтобы изменить его, я просто хотел, чтобы текст изменить, который используется для установки checkbox checked, поэтому я удалил его и добавил его другим PdfName.

Надеюсь, это поможет и кому-то еще.

0

Правильно ли вы правильно поняли, хотите ли вы установить состояние появляющейся информации? Состояние внешнего вида соответствует значению/AS с такими значениями, как/Off или/Yes. Значения, которые вы используете, должны соответствовать отображаемым вам словарям, которые вы определили для себя, в то время как вы можете опустить параметр/Off. Название/Off внешний вид является исправление, но вы можете (по крайней мере, до PDF 1.7) определить свои собственные/On (или/Да) внешний вид ...

Чтобы установить состояние внешнего вида с IText:

Item item = acroFields.getFieldItem("checkbox"); 
PdfDictionary dict = item.getWidget(0); 
dict.put(PdfName.AS, PdfName.Off); 
//dict.put(PdfName.AS, new PdfName("Yes")); 
+0

Спасибо, это почти то, что я сделал, чтобы исправить это – user5103374

Смежные вопросы