什么是 iText 以及为什么需要它?
iText 是一个用于 Java 的强大库,旨在创建和处理 PDF 文档。它允许以编程方式生成 PDF 文件,添加文本、图像、表格、表单和注释。该库广泛应用于企业应用程序中,用于自动化报告、发票、合同和其他文档。iText 的主要优势在于对 PDF 内容和结构的完全控制。
安装 iText
要在 Maven 项目中连接 iText,请在 pom.xml 中添加依赖项:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.2.5</version> <type>pom</type></dependency>对于 Gradle:
implementation 'com.itextpdf:itext7-core:7.2.5'iText 的主要功能
- 从头创建 PDF: 添加段落、表格、图像。
- 处理表单: 填充和提取 AcroForms 中的数据。
- 加密和保护: 设置密码,限制打印或复制。
- 将 HTML 转换为 PDF: 使用
html2pdf模块。 - 合并和拆分页面: 处理多个文档。
Java 代码示例
让我们创建一个包含文本和表格的简单 PDF:
import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Paragraph;import com.itextpdf.layout.element.Table;
public class PdfGenerator { public static void main(String[] args) throws Exception { String dest = "example.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf);
// 添加标题 document.add(new Paragraph("Hello, World!"));
// 创建一个 3x2 的表格 Table table = new Table(3); table.addCell("Name"); table.addCell("Age"); table.addCell("City"); table.addCell("Anna"); table.addCell("25"); table.addCell("Moscow"); table.addCell("Ivan"); table.addCell("30"); table.addCell("Saint Petersburg");
document.add(table); document.close(); System.out.println("PDF created: " + dest); }}何时使用 iText
该库非常适合以下场景:
- 在 Web 应用程序(Spring Boot、Java EE)中生成报告和发票。
- 自动化文档工作流:合同、证书、货运单。
- 创建供用户填写的交互式 PDF 表单。
- 将 HTML 模板转换为 PDF 用于打印或分发。
iText 是 Java 中处理 PDF 的事实标准。替代方案:Apache PDFBox(更底层)和 Aspose.PDF(商业软件)。