在ASP.NET中創建PDF-iTextSharp起步
來自: http://blog.csdn.net//chenguang79/article/details/41477823
轉自:http://www.cnblogs.com/CareySon/archive/2011/11/02/2233174.html
.Net framework 中自身并不包含可以和pdf打交道的方法。所以,當你需要你的ASP.Net Web應用程序中包含創建或與PDF文件交互的部分時,就不得不去找可用的第三方組件.使用谷歌可以搜索到在你預算之內的收費組件,當然同時也有一些開源組件。其中之一就是iTextSharp,這個程序是著名的JAVA工具iText的.Net版本.
但是iTextSharp最大問題是缺少文檔.雖然官網上有一些起步教程,但大多數程序員還是選擇去看JAVA版本的文檔-也就是iText的文檔.或者是去買市面上唯一一本關于這方面的書iText in Action.然而,這本書是針對Java版本的iText的書.iText in Action中大多數代碼僅僅需要少量修改就可以在.Net下使用,但如果你的C#水平還是相對比較菜時,Java和.Net兩個版本之間類庫命名的差別和.Net版本下缺少文檔,往往會讓你抓狂。最終無奈之下,你只能用Reflector來查看某些方法到底是干什么用的.所以,作為”How to”系列文章,本文將講述如何開始使用C#版的iTextSharp.
第一件事是在這里下載iTextSharp,下載完成后解壓zip文件得到itextsharp.dll文件,在Visual Studio或Web Developer中創建一個新的網站,通過添加Asp.net文件夾選項添加bin目錄,在bin目錄下右鍵選擇添加引用選項,在瀏覽選項卡中,選擇itextsharp.dll:
然后點擊OK,這個dll隨后會被加到bin目錄下,現在你可以在你的網站或項目中使用iTextSharp了.
我還添加了一個用于存放生成的PDF的文件夾命名為PDFs.,為了避免每次使用iTextSharp類時都使用完全路徑,我還添加了幾個using語句:
using iTextSharp.text;using iTextSharp.text.pdf;</pre>
另外,你還需要引用System.IO命名控件,因為你需要創建,打開和關閉文件,這個命名空間中的一些Class也必不可少.
iTextSharp的核心對象是Document對象,你需要通過Document對象的實例來操作內存中的pdf文件,所以首先需要實例化一個Document對象:
var doc1 = new Document();上述代碼在在內存中使用默認設置來實例化一個Document對象,默認的文檔大小是A4(也就是210毫米x297毫米,或是8.26英尺x11.69英尺),頁邊距默認都是半英尺.下一步要做的就是將內存中的Document對象保存到硬盤中,使用iTextSharp.text.pdf.PdfWriter類來實現這個功能://use a variable to let my code fit across the page...string path = Server.MapPath("PDFs");
PdfWriter.GetInstance(doc1, new FileStream(path + "/Doc1.pdf", FileMode.Create));</pre>
現在就可以對文檔進行操作了,首先打開文檔,往里寫一段內容,最后關閉文檔:doc1.Open();doc1.Add(new Paragraph("My first PDF"));
doc1.Close();</pre>就是這么簡單,下面刷新PDFS文件夾,你就會發現一個新的文件-Doc1.pdf,打開這個文件,剛才添加的段落已經成功顯示.
很多時候,你并不希望通過默認設置創建默認大小,默認邊距的PDF文檔,所以iTextSharp允許你自定義這些設置,所以Document對象還提供了其他兩個構造函數:
public Document(iTextSharp.text.Rectangle pageSize);public Document(iTextSharp.text.Rectangle pageSize, float, float, float, float);</pre>
第一個構造函數可以這樣使用:
var doc = new Document(PageSize.A5);
PageSize類包含了一系列Rectangle對象代表了大多數紙張的大小,從A0到A10,B0到B10,legal,分類賬,信封,明信片,剪報等,如果PageSize類內的紙張大小無法滿足你的需求,你可以自定義一個Rectangle對象,對其設置值后作為參數傳給Document構造函數:var doc = new Document(new Rectangle(100f, 300f));PdfWriter.GetInstance(doc, new FileStream(path + "/Doc2.pdf", FileMode.Create));
doc.Open();
doc.Add(new Paragraph("This is a custom size"));
doc.Close();</pre>
上面代碼中,創建的PDF文檔為100像素寬,300像素長,因為是72像素/英尺,所以這個文檔并不大,實際上為1.39 英尺 x 4.17 英尺().第二個構造函數以Rectangle和四個float類型的數字作為參數允許你通過float類型的變量自定義頁邊距,同樣,單位是像素,默認半英尺的像素為36像素.
如果你使用PageSize類的構造函數,或者是自定義Rectangle,你還可以為文檔設置背景色,這個設置可以通過RGB顏色值,或是CMYK值。如果你生成的PDF文檔將會在專業的平板印刷機中印刷,你必須通過CMYK來設置.但對于大多數數碼打印機來說,使用RGB更容易被接受,當然,如果你的PDF用于WEB,則優先使用RGB,設置文檔的背景色,通過Rectangle對象的BackgroundColorproperty進行設置:
r.BackgroundColor = new CMYKColor(25, 90, 25, 0);r.BackgroundColor = new Color(191, 64, 124);</pre> 上面兩行代碼都會將文檔的背景色設置為迷人的粉紅色…
本文簡單介紹了iTextSharp,也是你學習iTextSharp的入口,后續文章將會詳細介紹這個敏捷的組件的一系列功能.