Java利用Spire.XLS for Java实现自动化生成PDF文档

 更新时间:2026年02月10日 08:14:36   作者:用户033212666367  
在 Java 后端高效灵活地实现 PDF 文档的生成,常常是困扰开发者的一个痛点,本文将为您介绍如何利用 Spire.XLS for Java 轻松驾驭 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利用Spire.XLS for Java实现自动化生成PDF文档的文章就介绍到这了,更多相关Java生成PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java数组转换为逗号分隔字符串的三种方法

    Java数组转换为逗号分隔字符串的三种方法

    这篇文章主要介绍了Java中三种将数组转为逗号分隔字符串的方法:方法1通用但含括号,方法2专用于字符串数组高效,方法3灵活但性能较差,建议根据数组类型选择String.join()或Arrays.toString(),需要的朋友可以参考下
    2025-09-09
  • 基于Java编写一个实用的ExcelUtil工具类

    基于Java编写一个实用的ExcelUtil工具类

    在项目中经常遇到excel表格导入导出功能,每次都要重复写有关excel 的逻辑,所以本文直接使用Java编写一个实用的ExcelUtil工具类,希望对大家有所帮助
    2024-04-04
  • SpringBoot集成Redis及SpringCache缓存管理示例详解

    SpringBoot集成Redis及SpringCache缓存管理示例详解

    本文介绍了如何在SpringBoot中集成Redis并使用SpringCache进行缓存管理,详解了Redis的配置、使用以及SpringCache的注解,还阐述了SpringCache的工作原理,包括其AOP实现和与各种缓存框架的集成,使得开发者可以轻松实现缓存功能,以提高应用性能
    2024-09-09
  • Spring 事件驱动用法完整流程

    Spring 事件驱动用法完整流程

    文章总结了Spring事件驱动的完整流程,包括定义事件、发布事件、监听事件和线程池配置,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • java中hashCode方法与equals方法的用法总结

    java中hashCode方法与equals方法的用法总结

    总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复
    2013-10-10
  • Spring纯Java配置集成kafka代码实例

    Spring纯Java配置集成kafka代码实例

    这篇文章主要介绍了Spring纯Java配置集成kafka代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 在Java中解析JSON数据代码示例及说明

    在Java中解析JSON数据代码示例及说明

    这篇文章主要介绍了在Java中解析JSON数据的相关资料,文中讲解了如何使用Gson和Jackson库解析JSON数据,并展示了如何将日期时间字符串转换为时间戳,通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • springcloud微服务跨域的配置小结

    springcloud微服务跨域的配置小结

    本文主要介绍了springcloud微服务跨域的配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • Spring Cloud Gateway 服务网关的部署与使用详细讲解

    Spring Cloud Gateway 服务网关的部署与使用详细讲解

    这篇文章主要介绍了Spring Cloud Gateway 服务网关的部署与使用详细介绍,本文给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Java 如何获取某年的第一天和最后一天

    Java 如何获取某年的第一天和最后一天

    在统计的数据是时候,要统计某年的数据,开始时间是某年的第一天,结束时间是某年的最后一天,该如何获取某年的第一天和最后一天,今天通过本文介绍下Java获取某年的第一天和最后一天,需要的朋友可以参考下
    2023-07-07

最新评论