大家使用iTextSharp的機緣都不太一樣, 由於單位Crystal Report的License數量有限主管要我去找一個免費產生PDF方法, 避免Crystal Report的License使用過多, 於是乎就找上了iTextSharp.
 Crystal Report 與 iTextSharp比較表
|  | Crystal Report | iTextSharp | 
| 視覺化界面 | YES | NO | 
| 轉換成PDF | YES | YES | 
| 費用 | YES | NO | 
 
第一次總是特別辛苦的, 為了畫出一張收據, 沒有視覺化界面的幫忙, 透過大腦的想像, 終於完成了任務, 但是對於使用Crystal Report的老手們, 應該相當不習慣, 因為看不見畫的東西, 對他們是不方便的, 但可以省錢, 我想老闆不會說不, 最後我把我學習的成果做成一個範例.
 
請記得先去網站下載iTextSharp.dll這個檔案加入參考 
| 02 | usingSystem.Collections.Generic;  | 
| 06 | usingSystem.Web.UI.WebControls;  | 
| 09 | usingiTextSharp.text.pdf;  | 
| 11 | publicpartialclass_Default : System.Web.UI.Page   | 
| 13 |     protectedvoidPage_Load(objectsender, EventArgs e)  | 
| 16 |         Document Doc= newDocument();  | 
| 18 |         MemoryStream Memory= newMemoryStream();  | 
| 20 |         PdfWriter PdfWriter = PdfWriter.GetInstance(Doc, Memory);  | 
| 23 |         stringFontPath = Server.MapPath("kaiu.ttf");  | 
| 25 |         BaseFont bfChinese = BaseFont.CreateFont(FontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);  | 
| 27 |         Font ChFont = newFont(bfChinese, 9);  | 
| 33 |         iTextSharp.text.Table Tb = newiTextSharp.text.Table(4,5);  | 
| 37 |         Tb.AutoFillEmptyCells = true;  | 
| 40 |         Paragraph Title = newParagraph("iTextSharp畫表格測試", ChFont);  | 
| 42 |         Title.SetAlignment("center");  | 
| 45 |         iTextSharp.text.Cell Tc;  | 
| 46 |         Tc= newiTextSharp.text.Cell(newPhrase("點部落",ChFont));  | 
| 48 |         Tc.HorizontalAlignment = Element.ALIGN_CENTER;  | 
| 50 |         Tc.VerticalAlignment = Element.ALIGN_TOP;  | 
| 57 |         Tc = newiTextSharp.text.Cell(newPhrase("www.dotblogs.com.tw", ChFont));  | 
| 59 |         Tc.HorizontalAlignment = Element.ALIGN_CENTER;  | 
| 61 |         Tc.VerticalAlignment = Element.ALIGN_TOP;  | 
| 86 |         Response.AddHeader("Content-Disposition", "attachment; filename=pdfExample.pdf");  | 
| 87 |         Response.ContentType = "application/octet-stream";  | 
| 89 |         Response.OutputStream.Write(Memory.GetBuffer(), 0, Memory.GetBuffer().Length);  | 
| 90 |         Response.OutputStream.Flush();  | 
| 91 |         Response.OutputStream.Close();  | 
厲害喔!
回覆刪除加油!!!
^_^