iText組件的使用,基於maven構建項目

一、Itext項目簡介

iText 是著名的開放源碼的站點sourceforge一個項目, 是用於生成 PDF 文檔的一個java類庫.

官網地址:http://developers.itextpdf.com


二、iText核心類

· kernel io: 包含低層次常用的基礎的函數

· layout: 包含高層次的函數

· forms: 有關AcorForms操作需要的函數庫

· pdfa: 有關PDF/A(電子文檔標準)的相關操作

· pdftest: test例子中所引用的庫

 

 除了這些常用的JAR包意外,還有一些其他可能的包:

· barcodes: 當你想要創建bar code條形碼)時使用

· hyph: 當你想要文字有連字符時使用

· font-asian: 當你想要用CJK字符時 (Chinese / Japanese / Korean)

· sign: 當你想要使用電子簽名使用


三、maven依賴文件pom.xml

 <dependencies>
	  <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>4.12</version>
	      <scope>test</scope>
	    </dependency>  
    	<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>kernel</artifactId>
			<version>7.0.3</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>io</artifactId>
			<version>7.0.3</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>layout</artifactId>
			<version>7.0.3</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>font-asian</artifactId>
			<version>7.0.3</version>
		</dependency>

四、代碼

package itext;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfDocumentInfo;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

/**  作者:darkjazz 
*    日期:2018年3月21日 上午9:23:19
*/
public class Test {
public static void main(String[] args) throws IOException {
	    //1、創建流對象
	    PdfWriter pdfWriter=new PdfWriter(new File("你的pdf文件位置\\1.pdf"));
	    
	    //2、創建文檔對象
	    PdfDocument pdfDocument=new PdfDocument(pdfWriter);
	    
	    //3、創建內容文檔對象
	    
	    Document document=new Document(pdfDocument);
	    PdfDocumentInfo documentInfo=pdfDocument.getDocumentInfo();
	    documentInfo.setCreator("zzb");
	   
	    //、創建內容
	    Paragraph paragraph=new Paragraph("good morning");
	    
           //設置字體,解決中文顯示問題
	    PdfFont font=PdfFontFactory.createFont("STSongStd-Light","UniGB-UCS2-H",true);
	    paragraph.setFont(font);
	    paragraph.setBackgroundColor(Color.LIGHT_GRAY);
	    
	    
	    //將內容寫入文檔
	    
	    document.add(paragraph);
	    
	    document.close();
	    
	    System.out.println("ok!!!");
	    
	    //讀取生成文檔的內容
	    PdfReader pdfReader=new PdfReader(new File("\\JavaEE (1).pdf"));
	   
	    System.out.println(pdfReader.toString());
}
}

四、PDF文檔相關屬性設置

4.1可以通過 Document 的構造器定義 Pdf 文檔的大小

Document document = new Document(pdf,PageSize.A4);

 

4.2設定文檔屬性

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

 PdfDocument pdf = new PdfDocument(writer);      

通過獲取pdf文檔對象的PdfDocumentInfo 對象來設置文檔屬性。

@Test
	public void setDocumentInfo() throws FileNotFoundException{
		PdfWriter pdfwrite=new PdfWriter("d:\\pdf\\info.pdf");
		PdfDocument pdfdocument=new PdfDocument(pdfwrite);
		//通過PdfDocument對象獲取到PdfDocumentInfo
		PdfDocumentInfo info=pdfdocument.getDocumentInfo();
		//設置文檔作者
		info.setAuthor("darkja");
		//設置文檔創建人
		info.setCreator("darkjazz");
		//設置文檔關鍵字,多個關鍵字用,隔開
		info.setKeywords("學習");
		//設置文檔主題
		info.setSubject("文檔主題");
		//設置文檔標題
		info.setTitle("文檔標題");
		
		Document doc=new Document(pdfdocument,PageSize.A4);
		doc.add(new Paragraph("document info"));
		doc.close();
		
	}

五、生成帶表格和圖片的PDF

iText中處理表格的類爲:com.itextpdf.layout.element.Table

類的構造函數有四個:

Table(float[] pointColumnWidths)

Table(float[] columnWidths, boolean largeTable)

Table(UnitValue[] columnWidths)

Table(UnitValue[] columnWidths, boolean largeTable)

參數pointColumnWidths columnWidths columnWidths分別爲表格的每列寬度佔比屬性. 創建表格時必須指定表格的每列寬度比。

 

生成單元格對象:

• Cell 類表示單元格.

• Cell headcell=new Cell();//表示創建一個普通的單元格

• Cell headcell=new Cell(1,4);//表示創建一個跨1行4列的單元格

• 可以在單元格添加Paragraph對象

• 通過對Paragraph對象指定字體、位置、顏色

• new Paragraph("Job tile").setTextAlignment(TextAlignment.CENTER).setFont(font).setBold()

• 指定了文字位置、字體、是否加粗


package itext;



import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;

import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.TextAlignment;

/**  作者:darkjazz
*    日期:2018年3月21日 上午10:35:47
*/
public class TEST2 {
	public static void main(String[] args) throws IOException {
           //1、創建流對象
	    PdfWriter pdfWriter=new PdfWriter(new File("你的pdf位置\\2.pdf"));
	    
	    //2、創建文檔對象
	    PdfDocument pdfDocument=new PdfDocument(pdfWriter);
	    
	    //3、創建內容文檔對象
	    
	    Document document=new Document(pdfDocument);
	    
	    
	    
	    PdfFont font=PdfFontFactory.createFont("STSongStd-Light","UniGB-UCS2-H",true);
	    
	    Table table=new Table(new float[]{20,20,20,20});
	    table.setWidthPercent(100);
	    //創建表頭
	    Cell head=new Cell(1,4); //一行四列
	    head.add(new Paragraph("JOB TITLE")).setTextAlignment(TextAlignment.CENTER).setBackgroundColor(Color.ORANGE);
	    
	    Cell cell1=new Cell();
	    cell1.add("one");
	    Cell cell2=new Cell();
	    cell2.add("two");
	    Cell cell3=new Cell();
	    cell3.add("three");
	    Cell cell4=new Cell();
	    cell4.add("four");
	    
	    table.addCell(cell1);
	    table.addCell(cell2);
	    table.addCell(cell3);
	    table.addCell(cell4);
	    
	    
	    for (int i = 0; i < 16; i++) {
	    	  Cell cell=new Cell();
			cell.add(new Paragraph(i+" "));
			table.addCell(cell);
		}
	    
	    Cell teshucell=new Cell(2,1);
	    teshucell.setBackgroundColor(Color.GREEN);
	    table.addCell(teshucell);
	    
	    for (int i = 0; i < 6; i++) {
	    	  Cell cell=new Cell();
			cell.add(new Paragraph(i+" ").setBackgroundColor(Color.PINK));
			table.addCell(cell);
		}
	    
	    //加入表格
	    table.addHeaderCell(head);
	    //加入圖片
	    Image image=new Image(ImageDataFactory.create("你的圖片位置\\2.jpg"));
	    document.add(image);

	    
	    document.add(table);
	    
             document.close();
	    
	    System.out.println("ok!!!");
	    
	    
	}
	  
}
效果如下:


完結、撒花!!!!!!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章