在Java中生成PDF文档超实用教程

 更新时间:2026年02月10日 09:21:09   作者:Metaphor692  
Java生成PDF文档是许多开发者需要掌握的技术,这篇文章主要介绍了在Java中生成PDF文档的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在现代企业应用中,动态生成各类文档的需求日益增长,无论是自动生成报告、发票、合同,还是产品说明书和数据统计图表,PDF 格式因其良好的跨平台兼容性和版面固定性,成为了不可或缺的选择。然而,如何在 Java 后端高效、灵活地实现 PDF 文档的生成,常常是困扰开发者的一个痛点。本文将为您揭示一种高效且功能强大的解决方案——利用 Spire.XLS for Java 库,帮助您轻松驾驭 Java 中的 PDF 文档生成,摆脱繁琐的手动排版,实现自动化文档输出。

Spire.XLS for Java 简介与环境搭建

Spire.XLS for Java 是一款专业的 Excel 处理库,但其功能远不止于此。它提供了强大的转换能力,能够将 Excel 内容高质量地转换为 PDF 文档,同时支持直接创建和操作 PDF 元素。选择 Spire.XLS for Java 的原因在于其易用性、丰富的功能集以及出色的兼容性,能够满足从简单文本到复杂表格、图片的各种 PDF 生成需求。

要在您的 Java 项目中使用 Spire.XLS for Java,您需要将其作为依赖项添加到您的项目中。以下是 Maven 的配置示例:

Maven 依赖:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>12.1.4</version>
    </dependency>
</dependencies>

添加依赖后,确保您的项目能够成功构建。Spire.XLS for Java 通常在试用模式下即可使用其大部分功能,但若用于商业用途或去除水印,则需要购买并配置 License。

在 PDF 中添加文本内容

创建 PDF 文档并添加文本是最基本的操作。Spire.XLS for Java 允许您精确控制文本的字体、大小、颜色和位置。

import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

public class CreatePdfDocument {

    public static void main(String[] args) {

        // 创建一个 PdfDocument 对象
        PdfDocument doc = new PdfDocument();

        // 添加一个具有指定大小和边距的页面
        PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(35f));

        // 指定页面内容
        String titleText = "产品简介";
        String paraText = "Spire.PDF for Java 是一款专门对 PDF 文档进行操作的 Java 类库。" +
                "该类库的主要功能在于帮助开发人员在 Java 应用程序(J2SE 和 J2EE)中生成 PDF 文档和操作现有 PDF 文档," +
                "并且运行环境无需安装 Adobe Acrobat。同时兼容大部分国产操作系统," +
                "能够在中标麒麟和中科方德等国产操作系统中正常运行。";

        // 创建笔刷和字体
        PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
        PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
        PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("宋体",Font.BOLD,18));
        PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("宋体",Font.PLAIN,12));

        // 设置文本对齐方式
        PdfStringFormat format = new PdfStringFormat();
        format.setAlignment(PdfTextAlignment.Center);

        // 在页面上绘制标题
        page.getCanvas().drawString(titleText, titleFont, titleBrush, new Point2D.Float((float)page.getClientSize().getWidth()/2, 40),format);

        // 创建一个 PdfTextWidget 对象来容纳段落内容
        PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);

        // 创建一个矩形,段落内容将放置在其中
        Rectangle2D.Float rect = new Rectangle2D.Float(0, 70, (float)page.getClientSize().getWidth(),(float)page.getClientSize().getHeight());

        // 设置内容自动分页
        PdfTextLayout layout = new PdfTextLayout();
        layout.setLayout(PdfLayoutType.Paginate);

        // 在页面上绘制段落文本
        widget.draw(page, rect, layout);

        // 保存 PDF 文件
        doc.saveToFile("创建PDF.pdf");
        doc.dispose();

    }
}

上述代码首先创建了一个 PdfDocument 对象,然后添加了一个页面。接着,通过 page.getCanvas().drawString() 方法在指定坐标绘制文本。您可以自定义字体 (PdfTrueTypeFont)、颜色 (PdfSolidBrush) 和布局 (PdfStringFormat) 来满足不同的排版需求。

在 PDF 中创建表格

表格是报告和数据展示中不可或缺的元素。Spire.XLS for Java 提供了灵活的方式来创建和样式化 PDF 表格。

// 初始化表格
PdfTable table = new PdfTable();

// 定义表格数据
        String[] data = {"洲;国家;人口;世界人口占比;国旗",
                "亚洲;中国;1,391,190,000;18.2%; ",
                "亚洲;日本;126,490,000;1.66%; ",
                "欧洲;英国;65,648,054;0.86%; ",
                "欧洲;德国;82,665,600;1.08%; ",
                "北美洲; 加拿大; 37,119,000; 0.49%; ",
                "北美洲; 美国; 327,216,000; 4.29%; "
        };
String[][] dataSource = new String[data.length][];
for (int i = 0; i < data.length; i++) {
    dataSource[i] = data[i].split("[;]", -1);
}

// 绑定数据并配置表头
table.setDataSource(dataSource);
table.getStyle().setHeaderSource(PdfHeaderSource.Rows);
table.getStyle().setHeaderRowCount(1);
table.getStyle().setShowHeader(true);

// 在页面指定位置绘制表格
table.draw(page, new Point2D.Float(0, 30));

此示例展示了如何创建一个 PdfTable,并通过 setDataSource() 方法绑定二维数组数据。通过 table.getStyle() 可以灵活地设置表格的字体、边框、背景色等样式,甚至可以为表头和交替行设置不同的样式,极大地提升了表格的可读性和美观度。

在 PDF 中添加图片

在 PDF 文档中嵌入图片可以丰富内容,例如添加公司 Logo、产品图片或图表。Spire.XLS for Java 支持从文件加载图片并将其添加到 PDF 页面。

// 加载图片文件
PdfImage image = PdfImage.fromFile("image.jpg");

// 缩放图片(原尺寸的 50%)
float width = image.getWidth() * 0.50f;
float height = image.getHeight() * 0.50f;

// 在页面指定位置绘制图片
page.getCanvas().drawImage(image, 100f, 60f, width, height);

在运行此代码前,请确保您的项目根目录下存在图片文件。代码中首先通过 PdfImage.fromFile() 加载图片对象。最后,使用 page.getCanvas().drawImage() 方法将图片绘制到 PDF 页面上,您可以指定图片的位置和大小。

总结与展望

通过本文的详细教程,您已经掌握了在 Java 中利用 Spire.XLS for Java 库生成 PDF 文档的核心技能,包括添加纯文本、创建样式丰富的表格以及嵌入图片。Spire.XLS for Java 以其直观的 API 设计和强大的功能,极大地简化了 PDF 编程的复杂性,让开发者能够专注于业务逻辑,而非繁琐的文档格式细节。

当然,Spire.XLS for Java 的能力远不止这些,它还支持更高级的 PDF 操作,如添加页眉页脚、书签、超链接、表单域,甚至对 PDF 进行加密和数字签名等。鼓励您在实践中不断探索其更多功能,将其应用于您的 Java 项目中,实现更高效、更专业的文档自动化管理。希望这篇教程能为您的 Java 开发之旅提供有价值的参考和帮助!

到此这篇关于在Java中生成PDF文档的文章就介绍到这了,更多相关Java生成PDF文档内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 新手初学Java集合框架

    新手初学Java集合框架

    这篇文章主要介绍了JAVA集合框架的相关知识,文中讲解非常细致,帮助大家更好的理解学习JAVA框架,感兴趣的朋友快来了解下,希望能给你带来帮助
    2021-07-07
  • SpringBoot实现阿里云短信发送的示例代码

    SpringBoot实现阿里云短信发送的示例代码

    这篇文章主要为大家介绍了如何利用SpringBoot实现阿里云短信发送,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-04-04
  • java8 对象转Map时重复 key Duplicate key xxxx的解决

    java8 对象转Map时重复 key Duplicate key xxxx的解决

    这篇文章主要介绍了java8 对象转Map时重复 key Duplicate key xxxx的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringCloud Netflix Ribbon超详细讲解

    SpringCloud Netflix Ribbon超详细讲解

    这篇文章主要介绍了SpringCloud笔记HoxtonNetflix之Ribbon负载均衡,Ribbon是管理HTTP和TCP服务客户端的负载均衡器,Ribbon具有一系列带有名称的客户端(Named Client),对SpringCloud Ribbon负载均衡相关知识感兴趣的朋友一起看看吧
    2022-10-10
  • Mybatis_plus基础教程(总结篇)

    Mybatis_plus基础教程(总结篇)

    这篇文章主要介绍了Mybatis_plus基础教程(总结篇),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java中使用正则表达式获取网页中所有图片的路径

    Java中使用正则表达式获取网页中所有图片的路径

    这篇文章主要介绍了Java中使用正则表达式获取网页中所有图片的路径,本文直接给出实例代码,需要的朋友可以参考下
    2015-06-06
  • 深入理解Maven环境搭建和介绍

    深入理解Maven环境搭建和介绍

    这篇文章主要介绍了深入理解Maven环境搭建和介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • java.nio.file.NoSuchFileException异常问题及解决过程

    java.nio.file.NoSuchFileException异常问题及解决过程

    SpringBoot数据导入接口异常因Linux临时目录被清理导致路径缺失,需手动配置上传路径为/home/tmp并确保目录存在及权限,避免Files.createFile()找不到父目录
    2025-08-08
  • springboot相关面试题汇总详解

    springboot相关面试题汇总详解

    这篇文章主要介绍了springboot相关面试题汇总详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • SpringMVC Restful api接口实现的代码

    SpringMVC Restful api接口实现的代码

    本篇文章主要介绍了SpringMVC Restful api接口实现的代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论