直击Itext作用
java
遇到了什么问题?
随着互联网时代的到来,很多流程化的约定想要在互联网上进行会签,当然这个文件也具有法律效益
哪个技术可以解决这个问题?
itext: 第三方封装的工具,可以生成pdf文件
这个技术的使用方式?
Itext使用
1.创建maven项目并导入jar包
xml
<dependencies>
<!-- itext核心包 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<!-- 输出中文 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<!-- 设置pdf文件密码 -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.54</version>
</dependency>
<!-- 单元测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
2.Itext相关API
markdown
Itext的相关API: 核心类对象
com.itextpdf.text:
Document:这是iText库中最常用的类,它代表了一个pdf(实例)文件。如果你需要从零开始生成一个PDF文件,
你需要使用这个Document类。首先创建(new)该实例,然后打开(open)它,并添加(add)内容,
最后关闭(close)该实例,即可生成一个pdf文件。
Paragraph:表示一个缩进的文本段落,在段落中,你可以设置对齐方式,缩进,段落前后间隔等
Chapter:表示PDF的一个章节,他通过一个Paragraph类型的标题和整形章数创建
Font:这个类包含了所有规范好的字体,包括family of font,大小,样式和颜色,所有这些字体都被声明为静态常量
List:表示一个列表;
Anchor:表示一个锚,类似于HTML页面的链接。
pdf.PdfWriter:当这个PdfWriter被添加到PdfDocument后,所有添加到Document的内容将会写入到与文件或网络关联的输出流中。
pdf.PdfReader:用于读取PDF文件;
3.编写测试类
java
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPRow;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.List;
public class ItextDemo {
// 输出的基础路径
private static final String path = "C:/Users/85190/Desktop/pdf/";
/*
todo:
Itext的相关API: 核心类对象
com.itextpdf.text:
Document:这是iText库中最常用的类,它代表了一个pdf(实例)文件。如果你需要从零开始生成一个PDF文件,
你需要使用这个Document类。首先创建(new)该实例,然后打开(open)它,并添加(add)内容,
最后关闭(close)该实例,即可生成一个pdf文件。
Paragraph:表示一个缩进的文本段落,在段落中,你可以设置对齐方式,缩进,段落前后间隔等
Chapter:表示PDF的一个章节,他通过一个Paragraph类型的标题和整形章数创建
Font:这个类包含了所有规范好的字体,包括family of font,大小,样式和颜色,所有这些字体都被声明为静态常量
List:表示一个列表;
Anchor:表示一个锚,类似于HTML页面的链接。
pdf.PdfWriter:当这个PdfWriter被添加到PdfDocument后,所有添加到Document的内容将会写入到与文件或网络关联的输出流中。
pdf.PdfReader:用于读取PDF文件;
*/
/**
* 创建一个pdf文件,往文件中输入一段简单的内容
*/
@Test
public void test01() throws Exception {
// 1.新建document对象: 创建了一个pdf文件
Document document = new Document();
// 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
// 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
PdfWriter.getInstance(document, new FileOutputStream(path+"test1.pdf"));
// 3.打开pdf文档
document.open();
// 4.添加一个内容段落
document.add(new Paragraph("Hello World!"));
document.add(new Paragraph("I love you"));
document.add(new Paragraph("Now now is not once said after Now now is not once said after "));
// 5.关闭文档
document.close();
System.out.println("创建成功...");
}
/**
* 创建pdf文件并写入表格
*/
@Test
public void test02() throws Exception {
//创建文件
Document document = new Document();
//建立一个书写器
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path+"test2.pdf"));
//打开文件
document.open();
//添加内容
document.add(new Paragraph("content here"));
// 3列的表.
PdfPTable table = new PdfPTable(3);
table.setWidthPercentage(100); // 宽度100%填充
// 距相邻元素的像素值
table.setSpacingBefore(50f); // 前间距
table.setSpacingAfter(50f); // 后间距
List<PdfPRow> listRow = table.getRows();
//设置列宽: 列比例
float[] columnWidths = { 1f, 1f, 1f };
table.setWidths(columnWidths);
//行1
// 设置单元格数量
PdfPCell cells1[]= new PdfPCell[3];
// 在当前行中添加3个单元格
PdfPRow row1 = new PdfPRow(cells1);
//单元格
cells1[0] = new PdfPCell(new Paragraph("111"));//单元格内容
cells1[0].setBorderColor(BaseColor.BLUE);//边框验证
cells1[0].setPaddingLeft(5);//左填充20
// cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中
// cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中
cells1[1] = new PdfPCell(new Paragraph("222"));
cells1[2] = new PdfPCell(new Paragraph("333"));
//行2
PdfPCell cells2[]= new PdfPCell[3];
PdfPRow row2 = new PdfPRow(cells2);
cells2[0] = new PdfPCell(new Paragraph("444"));
cells2[1] = new PdfPCell(new Paragraph("555"));
cells2[2] = new PdfPCell(new Paragraph("666"));
//把第一行添加到集合
listRow.add(row1);
listRow.add(row2);
//把表格添加到文件中
document.add(table);
//关闭文档
document.close();
//关闭书写器
writer.close();
}
}