【譯】在ASP.NET中建立PDF-iTextSharp起步,
.Net framework 中自身並不包含可以和pdf打交道的方法。所以,當你需要你的ASP.Net Web應用程式中包含建立或與PDF檔案互動的部分時,就不得不去找可用的第三方組件.使用Google可以搜尋到在你預算之內的收費組件,當然同時也有一些開源組件。其中之一就是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;
另外,你還需要引用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));
現在就可以對文檔進行操作了,首先開啟文檔,往裡寫一段內容,最後關閉文檔:
doc1.Open(); doc1.Add(new Paragraph("My first PDF"));doc1.Close();
就是這麼簡單,下面重新整理PDFS檔案夾,你就會發現一個新的檔案-Doc1.pdf,開啟這個檔案,剛才添加的段落已經成功顯示.
很多時候,你並不希望通過預設設定建立預設大小,預設邊距的PDF文檔,所以iTextSharp允許你自訂這些設定,所以Document對象還提供了其他兩個建構函式:
public Document(iTextSharp.text.Rectangle pageSize);public Document(iTextSharp.text.Rectangle pageSize, float, float, float, float);
第一個建構函式可以這樣使用:
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();
上面代碼中,建立的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);
上面兩行代碼都會將文檔的背景色設定為迷人的粉紅色…
本文簡單介紹了iTextSharp,也是你學習iTextSharp的入口,後續文章將會詳細介紹這個敏捷的組件的一系列功能.