2014-09-05 2 views
1

Я пытаюсь отобразить символ сигма в PDF, сгенерированный кодом в моем приложении C# (Framework 4). Я использую iTextSharp (V. 4.1.2.0).iTextSharp отображение greek chars

Всякий раз, когда я пытаюсь напечатать мой символ с помощью следующего фрагмента кода ...

string l_sTmpText = "\u03A3"; 
l_table.AddCell(new Phrase(l_sTmpText, MyFont)); 

... Я не получаю ничего, кроме пустого пространства в моем PDF. Когда вы отправляетесь в отладку, мой сигма-символ правильно отображается в Visual Studio, поэтому я подозреваю, что это проблема с кодировкой.

Я нашел и прочитал этот пост: iTextSharp international text ...

... Но я до сих пор не удается заставить его работать. Я пытался создать BaseFont вроде этого:

private static BaseFont MySpecialBaseFont = iTextSharp.text.pdf.BaseFont.CreateFont("C:\Windows\Fonts\Arial.ttf", iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED); 

Моя проблема заключается строительство Phrase объекта требует Font и не BaseFont. Я застрял здесь ...

ответ

2

Я нашел свою ошибку ... В начале было право:

private static BaseFont MySpecialBaseFont = iTextSharp.text.pdf.BaseFont.CreateFont("C:\\Windows\\Fonts\\Arial.ttf", iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED); 

Затем я должен был создать шрифт (я застрял там) из моей BASEFONT :

private static Font MySpecialCharfont = new iTextSharp.text.Font(MySpecialBaseFont); 

затем я могу создать свою фразу объект:

new Phrase(l_sTabulationString + l_sTmpText.ToLowerInvariant(), MySpecialCharfont) 

Пожалуйста, обратите внимание на ToLowerInvariant(), что позволило мне получите версию sigma char. Надеюсь, это поможет кому-то еще ...