2014-09-05 134 views
1

我試圖在我的C#Framework 4)應用程序中的代碼生成的PDF中顯示sigma字符。我正在使用iTextSharp(V. 4.1.2.0)。iTextSharp顯示希臘字符

每當我試着用下面的代碼片段打印我字符...

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。我卡在這裏......

回答

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的lowerCase版本。希望這會幫助別人...