在ASP.NET中創建PDF-iTextSharp起步

ErnBacon 8年前發布 | 37K 次閱讀 PDF工具包

來自: 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:

     1

    然后點擊OK,這個dll隨后會被加到bin目錄下,現在你可以在你的網站或項目中使用iTextSharp了.

    2

     我還添加了一個用于存放生成的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> 上面兩行代碼都會將文檔的背景色設置為迷人的粉紅色…

    3

    本文簡單介紹了iTextSharp,也是你學習iTextSharp的入口,后續文章將會詳細介紹這個敏捷的組件的一系列功能.



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