文章环境
jdk1.8,springboot2.6.13
POM依赖
XML
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
示例代码
java
package com.example.example;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author bao
* @date 2024/3/25 16:10
*/
public class SimpleGenPdf {
public static void main(String[] args) throws DocumentException,
IOException {
// 定义中文字体
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontCN = new Font(bfChinese, 12, Font.NORMAL);
// 步骤1:创建一个大小为A4的文档
Document document = new Document(PageSize.A4);
try {
// 步骤 2:
// 我们为document创建一个监听,并把PDF流写到文件中
//获取资源文件路径
String resourcePath = "./src/main/resources/";
PdfWriter.getInstance(document, new FileOutputStream(resourcePath + "/pdf/simplePdf.pdf"));
// 步骤 3:打开文档
document.open();
// 段落
Paragraph paragraph = new Paragraph("证明\r\r", new Font(bfChinese, 13, Font.NORMAL));
//设置文字居中
paragraph.setAlignment(Element.ALIGN_CENTER);
//设置左缩进
paragraph.setIndentationLeft(12);
//设置右缩进
paragraph.setIndentationRight(12);
//设置首行缩进
paragraph.setFirstLineIndent(24);
//行间距
paragraph.setLeading(15f);
//设置段落上空白
paragraph.setSpacingBefore(5f);
//设置段落下空白
paragraph.setSpacingAfter(5f);
document.add(paragraph);
//第一个表格
document.add(new Paragraph("默认情况下的大小---居中 80%", fontCN));
// 创建一个有3列的表格
PdfPTable userTable = new PdfPTable(3);
// 定义一个表格列头
PdfPCell tableColumnHead = new PdfPCell(new Paragraph("header with colspan 3"));
// 定义一个表格单元的跨度
tableColumnHead.setColspan(3);
// 把单元加到表格中
userTable.addCell(tableColumnHead);
//把下面这9项顺次的加入到表格中,当一行充满时候自动折行到下一行
userTable.addCell("1.1");
userTable.addCell("2.1");
userTable.addCell("3.1");
userTable.addCell("1.2");
userTable.addCell("2.2");
userTable.addCell("3.2");
userTable.addCell("1.3");
userTable.addCell("2.3");
userTable.addCell("3.3");
// 增加到文档中
document.add(userTable);
//第二个表格
document.add(new Paragraph("居中 100%", fontCN));
PdfPTable centerTable = userTable;
// 设置表格大小为可用空白区域的100%
centerTable.setWidthPercentage(100);
// 增加到文档中2
document.add(centerTable);
//第三个表格
document.add(new Paragraph("居右 50%", fontCN));
PdfPTable rightTable = userTable;
// 设置表格大小为可用空白区域的50%
rightTable.setWidthPercentage(50);
// 设置水平对齐方式为 居右
rightTable.setHorizontalAlignment(Element.ALIGN_RIGHT);
// 增加到文档中3
document.add(rightTable);
document.add(new Paragraph("居左 50%", fontCN));
PdfPTable leftTable = userTable;
// 设置水平对齐方式为 居左
leftTable.setHorizontalAlignment(Element.ALIGN_LEFT);
document.add(leftTable);
} catch (Exception de) {
de.printStackTrace();
}
// 步骤 5:关闭文档
document.close();
}
}