iText 是著名的开放源码的站点sourceforge一个项目, 是用于生成 PDF 文档的一个java类库.
官网地址:http://developers.itextpdf.com
· kernel 和 io: 包含低层次常用的基础的函数
· layout: 包含高层次的函数
· forms: 有关AcorForms操作需要的函数库
· pdfa: 有关PDF/A(电子文档标准)的相关操作
· pdftest: test例子中所引用的库
除了这些常用的JAR包意外,还有一些其他可能的包:
· barcodes: 当你想要创建bar code(条形码)时使用
· hyph: 当你想要文字有连字符时使用
· font-asian: 当你想要用CJK字符时 (Chinese / Japanese / Korean)
· sign: 当你想要使用电子签名时使用
junit
junit
4.12
test
com.itextpdf
kernel
7.0.3
com.itextpdf
io
7.0.3
com.itextpdf
layout
7.0.3
com.itextpdf
font-asian
7.0.3
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());
}
}
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();
}
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!!!");
}
}
效果如下: