当前位置:首页 > Java

java如何生成pdf

2026-03-23 07:29:56Java

使用 iText 库生成 PDF

iText 是一个广泛使用的 Java 库,专门用于创建和操作 PDF 文档。以下是使用 iText 生成 PDF 的基本步骤:

添加依赖到 Maven 项目:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>

创建简单 PDF 文档:

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("example.pdf"));
document.open();
document.add(new Paragraph("Hello, this is a PDF created with iText."));
document.close();

使用 Apache PDFBox 生成 PDF

Apache PDFBox 是另一个流行的开源 Java 库,用于处理 PDF 文档。

添加 Maven 依赖:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

创建 PDF 示例代码:

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);

PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello PDFBox");
contentStream.endText();
contentStream.close();

document.save("pdfbox-example.pdf");
document.close();

使用 JasperReports 生成 PDF

JasperReports 是一个强大的报表生成库,可以输出多种格式包括 PDF。

添加 Maven 依赖:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.17.0</version>
</dependency>

生成 PDF 示例:

JasperReport report = JasperCompileManager.compileReport("report.jrxml");
JasperPrint print = JasperFillManager.fillReport(report, parameters, dataSource);
JasperExportManager.exportReportToPdfFile(print, "report.pdf");

使用 OpenPDF 生成 PDF

OpenPDF 是 iText 的一个分支,提供了类似功能但采用 LGPL 和 MPL 许可证。

Maven 依赖:

<dependency>
    <groupId>com.github.librepdf</groupId>
    <artifactId>openpdf</artifactId>
    <version>1.3.26</version>
</dependency>

创建 PDF 示例:

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("openpdf-example.pdf"));
document.open();
document.add(new Paragraph("Generated with OpenPDF"));
document.close();

使用 Thymeleaf 模板生成 PDF

结合 HTML 模板引擎和 PDF 渲染工具可以更灵活地生成 PDF。

示例工作流程:

  1. 使用 Thymeleaf 生成 HTML
  2. 使用 Flying Saucer 将 HTML 转换为 PDF

Maven 依赖:

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.1.22</version>
</dependency>

转换代码示例:

java如何生成pdf

String html = "<html><body><h1>Hello PDF</h1></body></html>";
OutputStream os = new FileOutputStream("template.pdf");
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(os);
os.close();

每种方法各有优势,iText 和 OpenPDF 适合程序化生成简单 PDF,PDFBox 适合需要底层操作的情况,JasperReports 适合复杂报表,而模板方法适合基于 HTML 的设计。

标签: javapdf
分享给朋友:

相关文章

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java中如何输入

java中如何输入

输入方法 在Java中,可以通过多种方式实现输入操作,具体取决于输入来源和需求。以下是几种常见的输入方法: 使用Scanner类 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读…

java如何避免死锁

java如何避免死锁

避免死锁的方法 固定顺序获取锁 确保所有线程按照相同的顺序获取多个锁。例如,若需要获取锁A和锁B,所有线程必须先获取A再获取B,避免交叉依赖导致的死锁。这种方式破坏了“循环等待”条件。 使用锁超时机…

教你如何完全卸载java

教你如何完全卸载java

卸载 Java 的步骤 Windows 系统 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到 Java 相关的条目,通常显示为“Java”或“Java(TM)”。右键点击选择卸载,按照…

如何学习好java

如何学习好java

掌握Java基础知识 学习Java的第一步是掌握其基础知识,包括数据类型、变量、运算符、控制流语句(如if-else、for循环、while循环)以及数组。这些是构建更复杂程序的基石。可以通过在线教程…