當前位置:成語大全網 - 漢語詞典 - 如何使用Java組件itext生成pdf

如何使用Java組件itext生成pdf

如何使用Java組件itext生成pdf?IText是壹個java類庫,可以快速生成PDF文件。iText的java類對於那些想要生成包含文本、表格和圖形的只讀文檔的人非常有用。它的類庫尤其與java Servlet有很好的結合。使用iText和PDF可以使您正確地控制Servlet的輸出。

在企業信息系統中,報表處理壹直扮演著重要的角色,Java組件-ITEXT可以非常快速地生成PDF報表。IText是知名開源網站sourceforge的項目,是生成PDF文檔的java類庫。IText不僅可以生成PDF或rtf文檔,還可以將XML和Html文件轉換成PDF文件。通過在服務器端使用Jsp或JavaBean生成PDF報表,客戶端使用超鏈接顯示或下載生成的報表,很好地解決了B/S系統的報表處理問題。

壹. iText簡介

IText是知名開源網站sourceforge的項目,是生成PDF文檔的java類庫。IText不僅可以生成PDF或rtf文檔,還可以將XML和Html文件轉換成PDF文件。

iText的安裝非常方便。在/iText/download.html-download網站下載文件iText.jar後,只需要將iText.jar的路徑添加到系統的類路徑中,就可以在程序中使用iText類庫了。

其次,創建第壹個PDF文檔

用iText生成PDF文檔有五個步驟:

(1)建立com.lowagie.text.Document對象的實例。

Document = new Document();

(2)建立Writer與文檔對象關聯,文檔可以通過Writer寫入磁盤。

PDFWriter.getInstance(document,new file output stream(" hello world。PDF "));

③打開文檔。

document . open();

④向文檔中添加內容。

document.add(新段落(“Hello World”));

⑤關閉文件。

document.close()。

通過以上五個步驟,妳可以制作壹個內容為“Hello World”的Helloworld.PDF文件。

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

com.lowagie.text.Document對象有三個構造函數,即:

公共文檔();

公共文檔(矩形頁面大小);

公共文檔(矩形頁面大小,

int marginLeft

int marginRight,

int marginTop,

int margin bottom);

構造函數的參數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等紙張類型。,也可以使用矩形Pagesize =。定制紙張。Rectangle方法rotate()可以將頁面設置為橫向。

編寫器對象

壹旦建立了文檔對象,就需要建立壹個或多個與之相關聯的Writer對象。可以通過Writer對象將特定的文檔保存為需要的格式,比如com.lowagie.text.PDF.PDFWriter可以將文檔保存為PDF文件,com . lowa gie . text . html . html Writer可以將文檔保存為html文件。

設置文檔屬性

在打開文檔之前,您可以設置文檔的標題、主題、作者、關鍵字、裝訂方式、創建者、制作者、創建日期等屬性。調用方法如下:

public boolean addTitle(字符串標題)

public boolean addSubject(字符串主題)

public boolean addKeywords(字符串關鍵字)

public boolean addAuthor(字符串作者)

公共布爾addCreator(字符串創建者)

公共布爾addProducer()

public boolean addCreationDate()

public boolean addHeader(字符串名稱,字符串內容)

其中addHeader方法對PDF文檔無效,addHeader只對html文檔有效,用於添加文檔的頭信息。

在生成新頁面之前,可以設置頁面大小、書簽、HeaderFooter等信息。調用方法是:

public boolean setPageSize(矩形PageSize)

公共布爾加法(水印水印)

public void刪除水印()

公共void set header(header footer header)

public void resetHeader()

公共void set footer(header footer footer)

public void resetFooter()

public void resetPageCount()

public void setPageCount(int pageN)

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

對於PDF文檔,iText還提供了文檔的顯示屬性。您可以通過調用writer的setViewerPreferences方法來控制Acrobat Reader在打開文檔時的顯示屬性,例如是否顯示單頁、是否全屏顯示、是否隱藏狀態欄和其他屬性。

此外,iText還為PDF文件提供了安全保護,可以通過Writer的setEncryption方法設置文檔的用戶密碼、只讀、可打印等屬性。

添加文檔內容

添加到文檔中的所有內容都是基於對象的,如短語、段落、表格、圖形對象等。段落對象通常用於向文檔中添加段落。

第三,文本處理

在iText中,文本通過組塊、短語和段落進行處理。

文本塊是處理文本的最小單位,它由壹個帶有格式(包括字體、顏色和大小)的字符串組成。例如,下面的代碼生成壹個帶下劃線的字符串,字體為HELVETICA,大小為10:

Chunk chunk1 = new Chunk("此文本帶下劃線",font factory . get font(font factory。HELVETICA字體,12。下劃線));

短語由壹個或多個文本塊組成,也可以設置短語的字體,但對於已經設置了字體的文本塊無效。可以通過短語成員函數add給短語添加壹段文字,比如:Phrase 6 . add(Chunk);

段落由壹個或多個組塊或短語組成,相當於WORD文檔中段落的概念,還可以設置段落的字號、顏色等屬性。此外,還可以設置段落首行的縮進和對齊方式(左對齊、右對齊和居中對齊)。段落的對齊方式可以通過函數setAlignment來設置。setAlignment的參數為居中對齊、2右對齊、3左對齊,默認為左對齊。

第四,表單處理

iText中處理表格的類有:com.lowagie.text.Table和com.lowagie.text.Table。對於相對簡單的表格處理,可以使用com.lowagie.text.Table,但是如果要處理復雜的表格,就需要用com.lowagie.text.Table來處理..下面是對com.lowagie.text.Table類的描述

com.lowagie.text.Table類有三個構造函數:

①表格(int列)

②表格(整數列,整數行)

③表格(屬性屬性)

參數columns、rows和attributes分別是表格的列數、行數和表格屬性。創建表時,必須指定表中的列數,但不需要指定行數。

創建表格後,您可以設置表格的屬性,如邊框寬度、邊框顏色和填充空間。這裏有壹個簡單的例子來說明如何使用該表。代碼如下:

1:Table table =新表(3);

2:table . setborderwidth(1);

3:table.setBorderColor(新顏色(0,0,255));

4:table . setpadding(5);

5:table . set spacing(5);

6:單元格cell =新單元格(“表頭”);

7:cell . set header(true);

8:cell . setcolspan(3);

9:table.addCell(單元格);

10:table . end headers();

11:cell =新單元格(“列跨度為1,行跨度為2的示例單元格”);

12:cell . setrowspan(2);

13:cell.setBorderColor(新顏色(255,0,0));

14:table . addcell(cell);

15:table . addcell(" 1.1 ");

16:table . addcell(" 2.1 ");

17:table . addcell(" 1.2 ");

18:table . addcell(" 2.2 ");

19:table . addcell(" cell test 1 ");

20:cell =新cell(“大Cell”);

21:cell . setrowspan(2);

22:cell . setcolspan(2);

23:table.addCell(單元格);

24:table . addcell(" cell test 2 ");

運行結果如下:

頁眉

列跨度為1,行跨度為2的單元格示例1.1 2.1

1.2 2.2

單元測試1大單元

單元測試2

代碼的第1-5行用於創建壹個新表。如代碼所示,建立壹個3列的表格,邊框寬度設置為1,顏色為藍色,填充為5。

代碼6-10行用於設置表頭,第7行cell . set header(true);是,單元格顯示為表頭信息;第8行:cell . setcolspan(3);指定單元格占用3列;在給表格添加表頭信息時,需要註意的是,壹旦添加了表頭信息,就必須調用endHeaders()方法,比如10行,否則表格展開後就不會顯示表頭信息。

代碼11-14行是在表格中增加壹個寬度為壹列,長度為兩行的單元格。

當單元格添加到表格中時,它們是從左到右、從上到下添加的。例如,在執行11行代碼後,表的右下方出現兩行兩列空白。這意味著當向表格中添加單元格時,首先填充此空白,然後開始新的壹行。15-24行代碼演示了這種添加順序。

動詞 (verb的縮寫)圖像處理

iText中的表格處理類是com.lowagie.text.Image目前iText支持GIF、Jpeg、PNG、wmf等圖像格式。對於不同的圖像格式,iText使用相同的構造函數來自動識別圖像格式。通過下面的代碼分別得到gif,jpg,png圖片的例子。

image gif = image . getinstance(" vonnegut . gif ");

image JPEG = image . getinstance(" my kids . jpg ");

image png = image . getinstance(" Hitchcock . png ");

圖像的位置

圖像的位置主要是指圖像在文檔中的對齊方式以及圖像與文本之間的位置關系。IText由函數public void set alignment(int alignment)處理,參數alignment為Image。對,圖像。中間和圖像。左,分別指右對齊、居中對齊和左對齊。當參數對齊是圖像時。文本換行和圖像。底層的文本顯示在圖形周圍,圖形顯示為文本的背景。這兩個參數可以結合起來達到預期的效果。比如設置對齊的效果(圖片。右|圖。textwrap)是圖像向右對齊,文本顯示在圖像周圍。

圖像的大小和旋轉

如果圖像未在文檔中以原始尺寸顯示,可通過以下功能進行設置:

public void scale absolute(int new width,int newHeight)

公共無效比例百分比(int百分比)

公共void scalePercent(int percentX,int percentY)

函數public void scale absolute(int new width,int new height)直接設置顯示大小;函數public void scale percent(int percent)設置顯示比例,例如scalePercent(50)表示顯示大小為原始大小的50%;函數Scale Percent (IntPercent X,IntPercent)是圖像高度和寬度的顯示比率。

如果圖片需要旋轉壹定角度後在文檔中顯示,可以通過函數public void setRotation(double r)設置,參數r為弧度;如果旋轉角度是30度,參數r = Math.PI/6.

六、中文處理

默認的iText字體設置不支持中文字體。需要下載遠東字體包iTextAsian.jar,否則無法輸出中文字體到PDF文檔。您可以通過下面的代碼在文檔中使用中文:

BaseFont BF Chinese = base font . create font(" ST song-Light "," UniGB-UCS2-H ",base font。未_嵌入);

com . lowa gie . text . font font Chinese = new com . lowa gie . text . font(BF Chinese,12,com . lowa gie . text . font . normal);

Paragraph =新段落(" hello ",font Chinese);