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!!!");
	    
	    
	}
	  
}
效果如下:


完结、撒花!!!!!!



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