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

如何使用Java組件itext生成pdf

實施過程:

壹。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文檔=新文檔();

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

pdf writer . 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,

中間邊距Right,

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 =新矩形(144,

720);定制紙張。Rectangle方法rotate()可以將頁面設置為橫向。

編寫器對象

壹旦建立了文檔對象,就需要建立壹個或多個與之相關聯的Writer對象。Writer對象可用於傳輸特定文檔。

以所需格式保存,如com.lowagie.text.PDF.PDFWriter可以將文檔保存為PDF文件。

Com。lowagie.text.html.htmlwriter可以將文檔保存為html文件。

設置文檔屬性

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

公共布爾值addTitle(字符串標題)

公共布爾addSubject(字符串主題)

公共布爾addKeywords(字符串關鍵字)

公共布爾型addAuthor(字符串作者)

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

公共布爾addProducer()

公共布爾addCreationDate()

公共布爾addHeader(字符串名稱,字符串內容)

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

在生成新頁面之前,您可以設置頁面大小、書簽、頁眉頁腳和其他信息。調用方法是:

公共布爾setPageSize(矩形PageSize)

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

公共void removeWatermark()

公共void set header(header footer header)

公共void resetHeader()

公共空設置頁腳(頁眉頁腳)

public void resetFooter()

public void resetPageCount()

公共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 . lowa gie . text . pdf . pdf table,這樣比較方便。

簡單的表格處理可以使用com.lowagie.text.Table,但如果要處理復雜的表格,則需要這個。

用於處理的com . lowa gie . text . pdf . pdf表格。以下是對com.lowagie.text.Table類的描述

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

①表格(中間列)

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

③表格(屬性屬性)

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

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

1: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 =新單元(“大單元”);

21:cell . setrowspan(2);

22:cell . setcolspan(2);

23:table.addCell(單元格);

24:table . addcell(“cell test2“);

運行結果如下:

頁眉

列跨度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 line是在表格中添加壹個寬度為壹列、長度為兩行的單元格。

當單元格添加到表格中時,它們是從左到右和從上到下添加的。例如,在執行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中,公共void set alignment(int

對齊)進行處理,參數對齊是圖像。對,圖像。中間和圖像。左,指右對齊、居中,

左對齊;當參數對齊是圖像時。文本換行和圖像。文本顯示在圖形周圍,圖形顯示為文本的背景。這

可以結合兩個參數來實現所需的效果。例如,設置對齊的顯示效果(圖像。右|圖像。textwrap)是圖像向右對齊並顯示文本。

在圖像周圍顯示。

圖像的大小和旋轉

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

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

公共空缺比例百分比(int百分比)

公共void scale percent(int percentX,int percentY)

函數public void scale absolute(int new width,int。

NewHeight)直接設置顯示大小;函數公共void scale percent(int

Percent)設置顯示比例,例如,scale percent(50)表示顯示大小為原始大小的50%;和函數scale percent(int

PercentX,int percentY)是圖像高度和寬度的顯示比例。

如果需要將圖像旋轉壹定角度後在文檔中顯示,可以通過函數public void set rotation(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。NOT _ embed);

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);