我正在尝试将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
。我被困在这里......
答案 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版本。希望这会帮助别人......