У меня есть рабочее решение в iText 5, где я заполняю поля формы следующим образом:
PdfStamper stamper = new PdfStamper(reader, output);
AcroFields form = stamper.getAcroFields();
form.setField("city", "ěščřžýáíéĚŠČŘŽÝÁÍÉ");
stamper.setFormFlattening(true);
И правильный результат:
Но после обновления на 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.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 для правильного заполнения значений в полях формы?
Спасибо