当前位置:首页 > 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程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

vue 实现导出pdf

vue 实现导出pdf

实现 Vue 导出 PDF 的方法 使用 html2pdf.js 库 html2pdf.js 是一个基于 jsPDF 和 html2canvas 的库,可以直接将 HTML 元素转换为 PDF。 安…

如何运行java项目

如何运行java项目

运行Java项目的步骤 确保Java环境已安装 在运行Java项目前,需确认系统已安装Java Development Kit(JDK)。通过命令行输入java -version和javac -ver…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

vue实现pdf预览

vue实现pdf预览

vue实现pdf预览的方法 使用pdf.js库 在Vue项目中集成Mozilla的pdf.js库可以高效实现PDF预览功能。该方案无需后端支持,纯前端实现。 安装依赖: npm install p…