iTextSharp显示希腊字符

时间:2014-09-05 08:46:45

标签: c# itextsharp non-ascii-characters

我正在尝试将sigma char显示为由我的C#Framework 4)应用程序中的代码生成的PDF。我正在使用iTextSharp(V。4.1.2.0)。

每当我尝试使用以下代码段打印我的字符时......

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

......我的PDF中只有一个空格。进入调试时,我的sigma char在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。我被困在这里......

1 个答案:

答案 0 :(得分: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);

然后我可以创建我的Phrase对象:

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

请注意ToLowerInvariant()允许我获得sigma char的lowerCase版本。希望这会帮助别人......