iText 全面介绍:强大的 Java PDF 操作库
一、iText 是什么?
iText 是一个功能强大的开源 PDF 库,用于在 Java(以及 .NET)环境下创建和操作 PDF 文档。它由 Bruno Lowagie 于 2000 年创建,目前由 iText Software 公司维护。
iText 不仅支持 生成 PDF,还支持 读取、修改、合并、拆分、加密、签名、水印 等各种复杂的 PDF 操作,因此被广泛应用于报表生成、电子签章、票据系统、PDF 模板填充等场景。
二、主要功能
| 功能类别 | 功能说明 |
|---|---|
| 📄 PDF 创建 | 从零开始生成复杂的 PDF 文档(包括表格、图片、字体、段落等) |
| 🧾 模板填充 | 读取 PDF 表单模板并自动填充数据(AcroForm 支持) |
| 🔐 安全控制 | PDF 加密、权限控制、数字签名验证 |
| 💧 水印添加 | 支持文字与图片水印(静态/动态) |
| ✂️ 拆分与合并 | 支持对 PDF 文件进行分页拆分与合并 |
| 🖼️ PDF 转图片 | 可配合其他库实现 PDF 页面的渲染与预览 |
| 🌍 多语言支持 | 支持中文、日文、韩文等 CJK 字体嵌入与渲染 |
三、iText 的版本介绍
| 版本 | 特点 |
|---|---|
| iText 5.x | 经典稳定版本,API 简洁,适合一般生成任务 |
| iText 7.x | 最新架构,模块化设计,性能更优,支持 PDF/A、PDF/UA、数字签章、字体嵌入等高级功能 |
| iText DITO | 面向企业的可视化模板编辑与生成工具,基于 iText 7 |
👉 建议新项目直接使用 iText 7,官方推荐且长期维护。
四、iText 的应用场景
- 报表导出系统:如财务报表、成绩单、工资单等 PDF 输出
- 电子签章系统:支持嵌入数字签名或图片印章
- 自动化文档生成:例如合同、发票、证书
- PDF 表单填充:从模板中读取表单域并填入数据
- 文件批处理系统:批量合并、拆分、加密 PDF
五、快速上手示例
Maven 依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.2.5</version>
</dependency>
简单示例:生成一个 PDF
import com.itextpdf.kernel.pdf.*;
import com.itextpdf.layout.*;
import com.itextpdf.layout.element.*;
public class CreatePDF {
public static void main(String[] args) throws Exception {
String dest = "hello.pdf";
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
document.add(new Paragraph("你好,iText!这是我的第一个 PDF 文档。"));
document.close();
System.out.println("PDF 生成成功:" + dest);
}
}
示例:填充 PDF 模板表单
PdfDocument pdfDoc = new PdfDocument(new PdfReader("template.pdf"), new PdfWriter("filled.pdf"));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
form.getField("studentName").setValue("苏小翔");
form.getField("studentId").setValue("20250121");
form.flattenFields(); // 扁平化,防止编辑
pdfDoc.close();