top
Loading...
用Java實現PDF報表

一、前言

在企業的信息系統中,報表處理一直占比較重要的作用,本文將介紹一種生成PDF報表的Java組件--iText。通過在服務器端使用Jsp或JavaBean生成PDF報表,客戶端采用超級連接顯示或下載得到生成的報表,這樣就很好的解決了B/S系統的報表處理問題。

二、iText簡介

iText是著名的開放源碼的站點sourceforge一個項目,是用于生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。

iText的安裝非常方便,在http://www.lowagie.com/iText/download.html - download 網站上下載iText.jar文件后,只需要在系統的CLASSPATH中加入iText.jar的路徑,在程序中就可以使用iText類庫了。

三、建立第一個PDF文檔

用iText生成PDF文檔需要5個步驟:

①建立com.lowagie.text.Document對象的實例。

Document document = new Document();

②建立一個書寫器(Writer)與document對象關聯,通過書寫器(Writer)可以將文檔寫入到磁盤中。

PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));

③打開文檔。

document.open();

④向文檔中添加內容。

document.add(new Paragraph("Hello World"));

⑤關閉文檔。

document.close();

通過上面的5個步驟,就能產生一個Helloworld.PDF的文件,文件內容為"Hello World"。

建立com.lowagie.text.Document對象的實例

com.lowagie.text.Document對象的構建函數有三個,分別是:

public Document();
public Document(Rectangle pageSize);
public Document(Rectangle pageSize,
int marginLeft,
int marginRight,
int marginTop,
int marginBottom);

構建函數的參數pageSize是文檔頁面的大小,對于第一個構建函數,頁面的大小為A4,同Document(PageSize.A4)的效果一樣;對于第三個構建函數,參數marginLeft、marginRight、marginTop、marginBottom分別為左、右、上、下的頁邊距。

通過參數pageSize可以設定頁面大小、面背景色、以及頁面橫向/縱向等屬性。iText定義了A0-A10、AL、LETTER、HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA 和FLSE等紙張類型,也可以通過Rectangle pageSize = new Rectangle(144, 720);自定義紙張。通過Rectangle方法rotate()可以將頁面設置成橫向。

書寫器(Writer)對象

一旦文檔(document)對象建立好之后,需要建立一個或多個書寫器(Writer)對象與之關聯。通過書寫器(Writer)對象可以將具體文檔存盤成需要的格式,如com.lowagie.text.PDF.PDFWriter可以將文檔存成PDF文件,com.lowagie.text.html.HtmlWriter可以將文檔存成html文件。

設定文檔屬性

在文檔打開之前,可以設定文檔的標題、主題、作者、關鍵字、裝訂方式、創建者、生產者、創建日期等屬性,調用的方法分別是:

public boolean addTitle(String title)
public boolean addSubject(String subject)
public boolean addKeywords(String keywords)
public boolean addAuthor(String author)
public boolean addCreator(String creator)
public boolean addProducer()
public boolean addCreationDate()
public boolean addHeader(String name, String content)

其中方法addHeader對于PDF文檔無效,addHeader僅對html文檔有效,用于添加文檔的頭信息。
當新的頁面產生之前,可以設定頁面的大小、書簽、腳注(HeaderFooter)等信息,調用的方法是:

public boolean setPageSize(Rectangle pageSize)
public boolean add(Watermark watermark)
public void removeWatermark()
public void setHeader(HeaderFooter header)
public void resetHeader()
public void setFooter(HeaderFooter footer)
public void resetFooter()
public void resetPageCount()
public void setPageCount(int pageN)

如果要設定第一頁的頁面屬性,這些方法必須在文檔打開之前調用。

對于PDF文檔,iText還提供了文檔的顯示屬性,通過調用書寫器的setViewerPreferences方法可以控制文檔打開時Acrobat Reader的顯示屬性,如是否單頁顯示、是否全屏顯示、是否隱藏狀態條等屬性。

另外,iText也提供了對PDF文件的安全保護,通過書寫器(Writer)的setEncryption方法,可以設定文檔的用戶口令、只讀、可打印等屬性。

添加文檔內容

所有向文檔添加的內容都是以對象為單位的,如Phrase、Paragraph、Table、Graphic對象等。比較常用的是段落(Paragraph)對象,用于向文檔中添加一段文字。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗