iText操作PDF文件的方法及代碼
iText簡介
iText是著名的開放源碼的站點sourceforge一個項目,是用于生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或 rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。 iText的安裝非常方便,下載iText.jar文件后,只需要在系統的CLASSPATH中加入iText.jar的路徑,在程序中就可以使用 iText類庫了。
iText使用方法
iTextAsian.jar (亞洲語言包,可以使用中文) 需要添加到工程中 使用時需要在系統的環境變量Path中加入iText的路勁,在程序中就可以使用了 用iText生成PDF文檔需要5個步驟:
1)建立com.lowagie.text.Doucment對象的實例 Document document = new Document();
2)建立一個書寫器(Writer)與document對象關聯,通過書寫器(Writer)可以將文檔寫入磁盤中PDFWriter.getInstance(document,new FileOutputStream(“要存放的文件路徑名”));
3)打開文檔document.open();
4)向文檔中添加內容
所有向文檔添加的內容都是以對象為單位 如:Phrase(短語)、Paragraph(段落)、Chunk(文本塊)、Table、Graphic
比較常用的為Paragraph對象,用于向文檔中添加一段文字。Chunk(文本塊)是處理文本的最小單位,由一串帶格式(包括字體、顏色、大 小) 的字符串組成。 Phrase(短語)由一個或多個Chunk(文本塊)組成,Phrase(短語)也可以設定字體, 但對于其中以設定過字體的Chunk(文本塊)無效。通過Phrase(短語)成員函數 Add可以將一個Chunk(文本塊)加入到Phrase(短語)中。
如:phrase.add(chunk); Paragraph(段落)由一個或多個Chunk(文本塊)或Phrase(短語)組成,相當于Word文檔中的段落概念,同樣可以設定段落的字體大小、顏色等屬性。
另外也可以設定段落的首行縮進、對齊方式(左對齊、右對齊、居中對齊)。通過函數SetAlignment()可以設定段落的對齊方式
如:Paragraph.setAlignment(int age); 參數有1(居中對齊)、2(右對齊)、3(左對齊);不設置默認左對齊。
Chunk chunk1 = new Chunk(“ceshi1″);
Chunk chunk2 = new Chunk(“ceshi2″);
Phrase phrase = new Phrase();
Phrase.add(chunk1);
Phrase.add(chunk2);
Paragraph paragraph1 = new Paragraph(“ceshizhi”);
第一種,直接傳值進去
Paragraph paragraph2 = new Paragraph (chunk2);
paragraph2.setAlignment(1); 居中對齊
第二種,傳一個文本塊對象進去
Paragraph paragraph2 = new Paragraph (phrase);
第三種,傳一個短語對象進去
Document.add(paragraph1);
Document.add(paragraph2);
Document.add(paragraph3); 把段落寫入文檔中
5) 關閉文檔
Document.close();
其他: 換頁 Document.newPage();
中文處理 當有中文的時候使用上面的方法則中文不會被寫入,
因此需要用到:
BaseFont bfChinese = BaseFont.createFont(“STSong-Light”,”UniGB-UCS2-H”, BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,Color.GREEN);
然后打開文檔寫入的時候,就應該按照下面的寫法:
Paragraph paragraph1 = new Paragraph(“測試”, fontChinese);
同上面一樣”測試”可以用文本塊或短語替換;
圖片處理 iText中處理圖像的類為com.lowagie.text.Image 目前iText支持的圖像格式有:、GIF、JPG、PNG等格式 iText用同樣的構造函數自動識別圖像格式: //參數為gif、jpg、png格式的圖片都可以
Image image = Image.getInstance(“參數”); //定義一個圖片信息,可以是絕對路徑,也可以是
URL Image img = Image.getInstance(“D:\\4.jpg”);
img = Image.getInstance(new URL(http://xxx.com/logo.jpg)); //添加到document中 document.add(img);
圖像的位置 圖像的位置主要是指圖像在文檔中的對齊方式、圖像和文本的位置關系。
IText中通過函數public void setAlignment(int alignment)進行處理, 參數alignment為Image.RIGHT、Image.MIDDLE、Image.LEFT分別指右對齊、居中、左對齊;
當參數alignment為Image.TEXTWRAP、Image.UNDERLYING分別 指文字繞圖形顯示、圖形作為文字的背景顯示。
這兩種參數可以結合以達到預期的效果, 如
setAlignment(Image.RIGHT|Image.TEXTWRAP) 顯示的效果為圖像右對齊,文字圍繞圖像顯示。 圖像的尺寸和旋轉 //設置圖像的寬和高
image.scaleAbsolute(int newWidth, int newHeight); //設置圖像比例,表示顯示的大小為原始大小的多少比例
image.scalePercent(int percent); //設置圖像的高寬比例
image.scalePercent(int percentX,int percentY); //設置圖像旋轉一定的角度;
參數arg為弧度,而不是角度 image.setRotation(float arg);
來源:tankqiu的博客