2016-09-15 1 views
0

Я пробовал заполнять форму pdf. У меня есть шаблон и заполните его моими данными.Как установить кодировку для iText, когда я вставляю значение заполнителю в формате 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"); 

этот текст вставляется sucsessuful.

Как установить кодировку для вставки текста в обычный режим?

+0

Я думаю, что существует проблема с шрифтами pdf-файла. Возможно, вы должны добавить правильный шрифт, используя метод ** addSubstitutionFont ** on ** form ** variable: 'form.addSubstitutionFont (/ * Вот ваш шрифт для кодировки utf-8 или Cp1251 * /)' –

+0

Каково намерение 'FontFactory.register (BaseFont.IDENTITY_H)'? Метод register зарегистрирован для * регистрации ttf- или ttc-файла *, но 'BaseFont.IDENTITY_H' является именем кодировки. – mkl

ответ

0

Одно из решений:

1) Скачать шрифт, который содержит все символы в Unicode (вы используете)

2) Создать шрифт с кодировкой (CP1251, CP1250, utf8 и т.д.)

3) Чем вы должны добавить шрифт, используя метод addSubstitutionFont от AcroFields для переменной формы.

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 
    }