使用ITextSharp生成PDF文件心得


  最近公司在做一個項目,需要把數據導出成PDF格式的文件,然后再網上搜了一下發現開源的組件還挺多的,用的比較多的就是itextsharp,itextsharp由java的itext演變而來,並且提供的豐富的功能,能夠制作表格、插入圖片等,這是官網的下載地址:http://sourceforge.net/projects/itextsharp/,下面就來簡單介紹一下使用itextsharp的心得。

  首先創建一個winform應用程序,並且添加itextsharp的引用,在按鈕的單擊事件寫上生成pdf的代碼,

      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對象的代碼不變

然后創建一個表格   PdfPTable tablerow1 = new PdfPTable(new float[]{20,20,20});后面的參數表示表格的列寬為20,列數為3列

將單元格添加到表格中

 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文件

 從結果可以看出以循環的方式添加表格時,添加的方向為從左到右,依次添加。但是如果我們要設計的表格比較復雜的話,就不一樣了,比如需要跨行或者跨列的,以及設置表格的高度,

 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);

生成的表格如下:

從結果我們不難發現 cell.Rowspan可以設置表格跨行相應的Colspan用來設置表格的跨列。

以上只是本人自己在使用Itextsharp時候的一些簡單的心得,希望能夠幫助大家。

具體的例子在官網也可以找的到,非常的詳細http://itextpdf.com/book/examples.php


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM