簡介c#
隨着各個行業的快速融合進互聯網,你們都但願把提升效率寄託於軟件行業,那麼PDF這種統一化標準的文檔,也必然在企業中佔據必定的份額。工具
目前可以產生PDF工具不少,同時例若有 Apose(商業), iTextSharp(商業+交流), Spire PDF(商業+免費), PDF library(免費). 而iTextSharp 在 Java 和 .Net都有建樹,同時社區和資料比較豐富,等到普遍關注和應用。this
搭建環境spa
iTextSharp 目前最新版本是 5.5.8 這個遵循 LGPL, 而 iTextSharp 在4.1.6 之前都是遵循 LGPL + MPL,這個對於經常使用混跡於商業軟件的你來講,應該是值得注意的。code
咱們經過從 Nuget 中搜索 iTextSharp ,而且選擇合適的版本添加到項目中。我是用的是 4.1.6 版本。圖片
基本概念文檔
Document是 iTextSharp 的核心內容,也就是咱們所說的須要的文檔,他主要是經過 open, Add, Close 方法來完成對文檔的操做。get
PdfPTable, PdfPCell 用來產生各式各樣的表格。it
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使用仍是比較方便,固然還有比較複雜的構建,我這篇文章就再也不描述,若是有機會會在之後的篇幅中進行描述與講解如何添加圖片,如何添加附件,以及圖片旋轉等等一系列問題。