最近公司在作一個項目,須要把數據導出成PDF格式的文件,而後再網上搜了一下發現開源的組件還挺多的,用的比較多的就是itextsharp,itextsharp由java的itext演變而來,而且提供的豐富的功能,可以製做表格、插入圖片等,這是官網的下載地址:http://sourceforge.net/projects/itextsharp/,下面就來簡單介紹一下使用itextsharp的心得。php
首先建立一個winform應用程序,而且添加itextsharp的引用,在按鈕的單擊事件寫上生成pdf的代碼,java
Document docPDF = new Document(PageSize.A4,0,0,0,0);//建立一個pdf文檔的對象,設置紙張大小爲A4,頁邊距爲0
//PageSize.A4.Rotate();當須要把PDF紙張設置爲橫向時,使用PageSize.A4.Rotate()
PdfWriter write = PdfWriter.GetInstance(doc, new FileStream(@"E:\pdffile.pdf", FileMode.OpenOrCreate, FileAccess.Write));//建立一個寫入PDF的對象, BaseFont bsFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font font = new Font(bsFont);//在這裏須要注意的是,itextsharp不支持中文字符,想要顯示中文字符的話須要本身設置字體 docPDF.Open();//打開
docPDF.Add(new Paragraph("第一個PDF文件", font));//將一句短語寫入PDF中
docPDF.Close();//關閉
上面的代碼只是將一個簡單的字符串寫入到PDF文件中,若是要用Itextsharp製做表格的話,可使用 PdfPTable、PdfPCell,PdfPTable用來建立一個表格,PdfPCell用來建立一個單元格,使用這種方法來建立表格的話有點相似於NPOI建立EXCEL的方法,也是將單元格添加到表格中。下面將作個簡單的介紹字體
上面建立PDF對象的代碼不變spa
而後建立一個表格 PdfPTable tablerow1 = new PdfPTable(new float[]{20,20,20});後面的參數表示表格的列寬爲20,列數爲3列.net
將單元格添加到表格中設計
for (int i = 0; i <= 27; i++)//表示建立一個3列9行的表格 { cell = new PdfPCell(new Paragraph(i.ToString(), font)); // tablerow1.AddCell( tablerow1.AddCell(cell);//將單元格添加到表格中 } docPDF.Add(tablerow1);//將表格添加到pdf文檔中
生成的pdf文件3d
從結果能夠看出以循環的方式添加表格時,添加的方向爲從左到右,依次添加。可是若是咱們要設計的表格比較複雜的話,就不同了,好比須要跨行或者跨列的,以及設置表格的高度,code
docPDF.NewPage();//新的一頁顯示 PdfPTable tablerow2= new PdfPTable(new float[] { 20, 20, 20 }); cell = new PdfPCell(new Paragraph("表格跨行 row1 col1",font)); cell.MinimumHeight = 40F;//設置表格的高度 cell.Rowspan = 2;//單元格誇2行 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row1 col2", font)); cell.MinimumHeight = 40F;//設置表格的高度 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row1 col3", font)); cell.MinimumHeight = 40F;//設置表格的高度 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row2 col3", font)); cell.MinimumHeight = 40F;//設置表格的高度 tablerow2.AddCell(cell); cell = new PdfPCell(new Paragraph("表格跨行row2 col3", font)); cell.MinimumHeight = 40F;//設置表格的高度 tablerow2.AddCell(cell); docPDF.Add(tablerow2);
生成的表格以下:orm
從結果咱們不難發現 cell.Rowspan能夠設置表格跨行相應的Colspan用來設置表格的跨列。對象
以上只是本人本身在使用Itextsharp時候的一些簡單的心得,但願可以幫助你們。
具體的例子在官網也能夠找的到,很是的詳細http://itextpdf.com/book/examples.php