我尝试填写pdf表格。我有模板并填写我的数据。

PdfReader reader = new PdfReader(src);
        FontFactory.register(BaseFont.IDENTITY_H);
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
        AcroFields form = stamper.getAcroFields();
        String[] split = reportDTO.note.split("\\n");
        form.setField("field1", "Значение");//value is some text in UTF-8


但我的值未插入field1 palceholder。它是空的。但是如果以英语为例

form.setField("field1", "some text");


此文本成功插入。

如何设置在普通视图中插入文本的编码?

最佳答案

解决方案之一:

1)下载包含所有unicode符号的字体(您使用)

2)创建带有编码的字体(Cp1251,Cp1250,utf8等)

3)比您应该通过在表单变量上使用AcroFields的addSubstitutionFont方法添加字体。

    public static final String **FONT = "resources/fonts/ARIALUNI.TTF";**

    somemethod(){
    **Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);**
    BaseFont baseFont = font.getBaseFont();

    PdfStamper stamper = null;
    try {
         stamper = new PdfStamper(reader, new FileOutputStream(fileDestination));
         AcroFields form = stamper.getAcroFields();
         form.addSubstitutionFont(baseFont);
         form.setField("field1", "Значение");
    ... // other fields, catch etc
    }

09-18 22:54