2013-02-21 3 views
1

У меня есть строковые данные, содержащие некоторые английские символы и некоторые китайские символы. Я создаю pdf-файл с этими данными, используя iTextSharp. После создания PDF-файла, когда я его открываю, pdf содержит только английские символы. Он не показывает китайских персонажей. Не могли бы вы рассказать мне, как отображать китайских символов в pdf-файле ?. Обратите внимание, что строковые данные, которые я пишу в pdf, содержат динамические языковые символы, иногда английский, иногда китайский, иногда японский и т. Д.Как отображать китайские символы в pdf-файле, созданном с помощью iTextSharp

+0

Просьба показать соответствующие части вашего кода. То есть особенно код, в котором вы определяете используемые вами шрифты. – mkl

+0

Я не задавал шрифтов в своем коде. –

+0

В этом случае взгляните на ответ Бруно. – mkl

ответ

3

Это объясняется в документации iText (Sharp). Когда у вас есть String с глифами с разных языков, вам необходимо использовать FontSelector, как показано в this example.

FontSelector selector = new FontSelector(); 
selector.AddFont(FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12)); 
selector.AddFont(FontFactory.GetFont("MSung-Light", "UniCNS-UCS2-H", BaseFont.NOT_EMBEDDED)); 
Phrase ph = selector.Process(TEXT); 
document.Add(new Paragraph(ph)); 

В этом случае я сначала добавляю Times Roman в селектор шрифтов, следуя за MSung-Light. Теперь все английские персонажи в TEXT будут в Times Roman. Символы, которые вы говорите, отсутствуют, будут отображаться с помощью MSung-Light. Если вы измените порядок MSung-Light и Times Roman, то полный TEXT будет отображаться в MSung-Light, поэтому убедитесь, что вы выбрали шрифты с умом. Порядок имеет значение, и каждый символ в вашем TEXT, для которого вы не определили шрифт, будет отсутствовать.

+0

Спасибо, Бруно. Я попробовал решение, которое вы дали. Это сработало. Большое спасибо. –

+0

Если ответ решил проблему, вы можете принять ее. Таким образом, люди с тем же вопросом признают это решение. –

Смежные вопросы