使用ASP .NET (C#) 產生PDF檔的好幫手—iTextSharp library (下)

來源:互聯網
上載者:User

http://www.cc.ntu.edu.tw/chinese/epaper/0016/20110320_1610.html

作者:唐瑤瑤 / 臺灣大學計算機及資訊網路中心程式設計組程式設計師

上一期的計中電子報中,我們向各位介紹了iTextSharp 這個十分強大且免費的PDF函式庫,相信各位對它應該已經不陌生了。接下來我們就針對幾項進階功能做介紹,包含Direct content、Header、Footer、Barcode及JavaScript等互動功能。
 

Part 1:Direct content
Direct content 是指在頁面的絕對位置中插入內容。範例中會使用到的是PdfContentByte及ColumnText 2個類別。首先於頁面中加入一張圖檔,接著我們在圖片的【上方 upper layer】寫字,在圖片的【下方 lower layer】畫一個矩形並填滿色彩。主要使用到的方法是PdfWriter.DirectContent 及PdfWriter.DirectContentUnder:

產生的結果如下圖:

接下來我們在頁面絕對座標位置上任意畫幾條直線:

如果是利用ColumnText 顯示文字內容於頁面絕對位置,請參考下列程式碼:

產生的結果如下圖:

Part 2:Header及Footer
如果我們希望針對每一頁都能加上Header或Footer時,除了需要用到Part 1 提到的Direct Content,最重要是要處理Page Event,也就是PdfPageEventHelper介面。
可以override 事件如下:OnChapter、OnChapterEnd、OnCloseDocument、OnEndPage、OnGenericTag、OnOpenDocument、OnParagraph、OnParagraphEnd、OnSection、OnSectionEnd、OnStartPage。我們可以針對程式需求,挑出需要使用到的事件來改寫。
在我們的範常式式中,希望能於頁尾顯示頁數及檔案建立時間。所以我們先建立Page Event class,並改寫OnOpenDocument 方法。PdfTemplate 是在每一頁頁尾用來存放總頁數的值:

接著override OnEndPage 方法。我們將在每一頁右上方Header顯示”NTU C&INC”文字;左下角Footer顯示頁數與總頁數、右下角Footer 顯示檔案產生的日期與時間。使用ShowTextAligned、ShowTextMatrix、ShowText 等方法設定文字顯示的絕對位置,並保留好template 的位置以顯示總頁數:

最後 override OnCloseDocument 方法,因為template 的位置已經都保留了,所以只要填入內容即可。

 

Part 3:Barcode條碼
iTextSharp 提供直覺的方式來產生各種條碼,包括Barcode、QR Code 等。您也可以利用上一節的Page event 作法於每一頁頁尾產生檔案條碼,使用PlaceBarcode 方法即可。程式碼很容易懂,直接複製如下:

產生結果如下圖:

 

Part 4:利用javascript與使用者互動

完整程式碼如下:

Javascript 程式碼很簡單:

產生的結果如下圖:

右上方會出現<列印本頁>文字,當滑鼠移上去時會顯示可以click按下的指標,按下滑鼠左鍵後,會跳出alert 視窗:

接著按下確定,會出現列印對話方塊:

上述這個功能可以用在隱藏menu bar 及tool bar 時,使用者可以於頁面上直接做列印動作。

結語:
在尚未接觸用程式產生PDF 檔案之前,對PDF只有很粗淺的認識,猜測大致上應該就只是某種檔案格式。真正接觸後才發現真是挖到寶庫,尤其是有這麼強大函式庫可供使用,對程式開發者來說簡直是如虎添翼。還有沒有其他功能尚未介紹?答案是有的,而且還很多,再找時間介紹給各位讀者。各位若有需求,可以先從參考資料中開始找起,也許您會得到更多。
 

參考資料

  1. 主要教學網站
    http://itextpdf.com/index.phphttp://www.mikesdotnetting.com/Article/80/Create-PDFs-in-ASP.NET-getting-started-with-iTextSharp

  2. 浮水印Watermark 製作http://footheory.com/blogs/donnfelker/archive/2008/05/11/using-itextsharp-to-watermark-write-text-to-existing-pdf-s.aspx

  3. 書籤Bookmark製作
    http://www.mazsoft.com/blog/post/2008/04/30/Code-sample-for-using-iTextSharp-PDF-library.aspx

  4. Footer 製作
    http://stackoverflow.com/questions/1032614/itextsharp-creating-a-footer-page-of

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.