Получение символа «?» (Вопросительный знак) для персонажей è, Ä, É, Ó, Nº, ú, Ö - PullRequest
0 голосов
/ 21 сентября 2018

Я генерирую шаблоны PDF из HTML-текста.Я получаю символ «?» (Вопросительный знак) для нескольких символов, таких как è, Ä, É, Ó, Nº, ú, Ö и т. Д. В сгенерированном файле PDF.

string font = @"\SEGOEUI.TTF";
FontProvider fp = new DefaultFontProvider(false, false, false);
FontProgram defaultFont = FontProgramFactory.CreateFont(font);
fp.AddFont(defaultFont);

ConverterProperties properties = new ConverterProperties(); 
properties.SetFontProvider(fp);

Может ли кто-нибудь помочь мне в этом?

Примечание. Эти символы правильно отображаются во входном тексте (html).

1 Ответ

0 голосов
/ 23 сентября 2018

В PDF вам необходимо указать кодировки для используемых вами шрифтов.Кодировка по умолчанию в FontProvider зависит от типа шрифта - для Type1 шрифтов это PdfEncodings.WINANSI, в других случаях это PdfEncodings.IDENTITY_H.

Не ясно, какой шрифт используется в PDF, когда вашhtml преобразуется, но в любом случае, если вы используете символы с диакритическими знаками и другие символы из разных диапазонов Unicode, вам следует использовать перегрузку addFont(FontProgram fontProgram, String encoding), чтобы явно указать кодировку и использовать кодировку PdfEncodings.IDENTITY_H.

Так что в вашем случае это должно быть

fp.AddFont(defaultFont, PdfEncodings.IDENTITY_H);
...