我在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功能的正确替代,因为在这里我正在更改字段的字体和文本大小,并且当我这样做时,我不必在意它m仅填写表格,此外,当字段具有不同的字体系列,粗细和大小时:
PdfFont font = PdfFontFactory.createFont(StandardFonts.HELVETICA, PdfEncodings.CP1250, true);
field.setValue("ěščřžýáíéĚŠČŘŽÝÁÍÉ", font, 10f);
在iText 7中还有其他事情可以将值正确填写在表单字段中吗?
谢谢