PDF 生成工具 – iTextSharp 入門

xiexiantao 8年前發布 | 83K 次閱讀 PDF工具包

來自: http://my.oschina.net/RainyZou/blog/631647



簡介

隨著各個行業的快速融合進互聯網,大家都希望把提高效率寄托于軟件行業,那么PDF這種統一化標準的文檔,也必然在企業中占據一定的份額。

目前能夠產生PDF工具很多,同時例如有 Apose(商業), iTextSharp(商業+交流), Spire PDF(商業+免費), PDF library(免費). iTextSharp Java .Net都有建樹,同時社區和資料比較豐富,等到廣泛關注和應用。

 

搭建環境

       iTextSharp 目前最新版本是 5.5.8 這個遵循 LGPL, iTextSharp 4.1.6 以前都是遵循 LGPL + MPL,這個對于常用混跡于商業軟件的你來說,應該是值得注意的。

       我們通過從 Nuget 中搜索 iTextSharp ,并且選擇合適的版本添加到項目中。我是用的是 4.1.6 版本。

 

基本概念

       DocumentiTextSharp 的核心內容,也就是我們所說的需要的文檔,他主要是通過 open, Add, Close 方法來完成對文檔的操作。

       PdfPTable, PdfPCell 用來產生各式各樣的表格。

       HeaderFooter 是文檔的渲染,用來生成頁面的頭部和尾部的。

 

簡單示例

       理解了上面的幾個概念,我們來通過幾個簡短的實例來了解 iTextSharp 的一些使用情況。

       生成一個簡單PDF文檔,讓我們了解一下iTextSharp 是如何創建一個文檔,同時如何保存到文件中的,理解一下生成文檔的幾個常用步驟。

            var doc1 = new Document(); //1
            FileStream stream = new FileStream(fileName, FileMode.Create);
            PdfWriter.GetInstance(doc1, stream); //2

            doc1.Open(); //3
            doc1.Add(new Paragraph("My First PDF"));//4
            doc1.Close();//5

     實例圖如下:

    

 

       生成一個帶有Header Footer PDF文檔,要理解Header Footer添加的時機,它應該在PDF打開之前進行設置,從另外的角度去看,就像是對文檔的一種渲染。

            var doc = new Document();
            PdfWriter.GetInstance(doc, new FileStream(fileName, FileMode.Create));

            HeaderFooter header = new HeaderFooter(new Phrase("this is the page"), false);
            header.Alignment = HeaderFooter.ALIGN_CENTER;
            doc.Header = header;

            doc.Footer = new HeaderFooter(new Phrase("C&C Reservoirs"), false);
            doc.Open();
            doc.Add(new Paragraph("What was the day today?"));

            doc.Close();

 

       下面示例是生成一個包含 table 的文檔格式,也是使用比較多的一種形式。主要要如何設置表頭,看看在表頭設置的時候分頁的處理。同時處理表格的格式等等。

            PdfPTable table = new PdfPTable(4);
            table.TotalWidth = 400f;
            table.LockedWidth = true;
            table.HeaderRows = 1;

            PdfPCell header = new PdfPCell(new Phrase("Header"));
            header.BorderWidth = 0;
            header.HorizontalAlignment = PdfCell.ALIGN_CENTER;
            header.Colspan = 4;
           

            table.AddCell(header);

            for (int i = 0; i < 100; i++)
            {
                table.AddCell("Cell 1");
                table.AddCell("Cell 2");
                table.AddCell("Cell 3");
                table.AddCell("Cell 4");
            }

            PdfPTable nested = new PdfPTable(1);
            nested.AddCell("Nested Row 1");
            nested.AddCell("Nested Row 2");
            nested.AddCell("Nested Row 3");

            PdfPCell nesthousing = new PdfPCell(nested);
            nesthousing.Padding = 0f;

            table.AddCell(nesthousing);

            PdfPCell bottom = new PdfPCell(new Phrase("bottom"));
            bottom.Colspan = 3;
            bottom.HorizontalAlignment = PdfCell.ALIGN_CENTER;
            bottom.VerticalAlignment = PdfCell.ALIGN_CENTER;

            table.AddCell(bottom);

總結

    對于iTextSharp使用還是比較方便,當然還有比較復雜的構建,我這篇文章就不再描述,如果有機會會在以后的篇幅中進行描述與講解如何添加圖片,如何添加附件,以及圖片旋轉等等一系列問題。

 

 本文由用戶 xiexiantao 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!