iText 7 и значение поля формы с диакритическими знаками - PullRequest
0 голосов
/ 29 августа 2018

У меня есть рабочее решение в iText 5, где я заполняю поля формы следующим образом:

PdfStamper stamper = new PdfStamper(reader, output);
AcroFields form = stamper.getAcroFields();
form.setField("city", "ěščřžýáíéĚŠČŘŽÝÁÍÉ");
stamper.setFormFlattening(true);

И правильный результат: iText 5 form field value


Но после обновления на iText 7 диакритические знаки перестали работать.

PdfAcroForm form = PdfAcroForm.getAcroForm(document, true);
Map<String, PdfFormField> fields = form.getFormFields();
PdfFormField field = fields.get("city");
field.setValue("ěščřžýáíéĚŠČŘŽÝÁÍÉ");
form.flattenFields();

Теперь результат неверен: iText 7 form field value

Я пробовал разные версии библиотек iText (7.0.4 и 7.1.2), а затем попытался преобразовать значения в разные кодировки (windows-1250 и iso-8859-2), но ничего не помогло.

Обновление: Следующий подход работает, но он не является правильной заменой функциональности iText 5, потому что здесь я изменяю шрифт и размер текста поля, и мне не нужно беспокоиться об этом, когда я только при заполнении формы, более того, когда поля имеют разное семейство шрифтов, вес и размер:

PdfFont font = PdfFontFactory.createFont(StandardFonts.HELVETICA, PdfEncodings.CP1250, true);
field.setValue("ěščřžýáíéĚŠČŘŽÝÁÍÉ", font, 10f);

Что еще нужно сделать в iText 7 для правильного заполнения значений в полях формы?

Спасибо

...