[itextsharp][001]建立第一個中文HelloWorld的Pdf

中文 pdf itextsharp

本文章內容類同於上一篇,請先參考[itextsharp][000]建立第一個HelloWorld的Pdf之後再來參考本篇,本篇重點在於中文字體的使用方式:

首先要取得中文字體的設定:windows其實都有內建字體,我知道的可以內建的引用的有標楷體以及中易黑體,副檔名都是.ttf,如果要使用其他的字體請自行上網搜尋下載喔~

//設定中文字體
//string chFontPath = "c:\\windows\\fonts\\KAIU.TTF";//windows內建的標楷體
string chFontPath = "c:\\windows\\fonts\\simhei.ttf";//windows內建的SimHei字體(中易黑體)                            
BaseFont chBaseFont = BaseFont.CreateFont(chFontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

然後我們利用利用phrase類別來吃中文字體,並設定字體大小為14:

Phrase helloPhrase = new Phrase();            
iTextSharp.text.Font helloFont = new iTextSharp.text.Font(chBaseFont, 14);

再來設定此phrase的文字內容並且加入到pdf document裡面:

string helloText = @"你好!";
helloPhrase = new Phrase(helloText, helloFont);
//將phrase內容加入到pdf檔案
doc.Add(helloPhrase);

這樣子就成功囉:

完整程式碼:

//設定文件紙張大小
Document doc = new Document(new iTextSharp.text.Rectangle(593f, 842f), 0, 0, 0, 0);
//設定pdf路徑
string path = Application.StartupPath + "\\ch1\\";
if (Directory.Exists(path) == false)
{
	Directory.CreateDirectory(path);
}

//設定中文字體
//string chFontPath = "c:\\windows\\fonts\\KAIU.TTF";//windows內建的標楷體
string chFontPath = "c:\\windows\\fonts\\simhei.ttf";//windows內建的SimHei字體(中易黑體)                            
BaseFont chBaseFont = BaseFont.CreateFont(chFontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

//利用phrase吃中文字體
Phrase helloPhrase = new Phrase();            
iTextSharp.text.Font helloFont = new iTextSharp.text.Font(chBaseFont, 14);
string helloText = @"你好!";
helloPhrase = new Phrase(helloText, helloFont);

//設定pdf檔案名稱
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(path + "你好.pdf", FileMode.Create));
doc.Open();
//將phrase內容加入到pdf檔案
doc.Add(helloPhrase);
doc.Close();

附註:iTextSharp_4_1_6的dll測試結果:中文的位置會跑掉!

需在document設定適當的margin,改變中文的起使位置,這邊是在文件的左邊以及上面增加50的margin:

Document doc = new Document(new iTextSharp.text.Rectangle(593f, 842f), 50f, 0, 50f, 0);

修正之後再度執行,文件就有顯示出中文字囉:

 

本文使用iTextSharp版本:5.5.8