在 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 依赖:

xml 复制代码
    
    
    
  <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 允许您精确控制文本的字体、大小、颜色和位置。

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 表格。

java 复制代码
    
    
    
  // 初始化表格
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 页面。

java 复制代码
    
    
    
  // 加载图片文件
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 开发之旅提供有价值的参考和帮助!

相关推荐
m0_7167652326 分钟前
C++提高编程--STL常用容器(set/multiset、map/multimap容器)详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio
iThinkAi智能体3 小时前
1个运营带4个实习生,周产350篇笔记:小红书图文矩阵真的没那么玄乎
人工智能·经验分享·笔记
再玩一会儿看代码4 小时前
Java中 next() 和 nextLine() 有什么区别?一篇文章彻底搞懂
java·开发语言·经验分享·笔记·学习
edtoplort4 小时前
CEO被逼退:业绩超预期仍难逃AI劫,从Adobe案例看90%公司都会犯的3个致命错误
经验分享
优化控制仿真模型4 小时前
【2026年6月最新】英语四级历年真题及答案解析PDF电子版(2015-2025年12月)
经验分享·pdf
程序阿北5 小时前
飞书官方开源CLI,AI Agent 终于能直接操控你的工作数据了。
经验分享
研知有术一站式科研平台6 小时前
研知有术论文辅导丨文献综述的三种类型和写法(附直接能用的写作模板)
人工智能·经验分享·机器学习·数据挖掘·论文笔记
oi..6 小时前
python Get/Post请求练习
开发语言·经验分享·笔记·python·程序人生·安全·网络安全
蒸汽求职7 小时前
【蒸汽教育求职干货】OPT只剩3个月还没找到工作,怎么办?——留学生IT求职的“紧急预案”
人工智能·经验分享·面试·职场和发展·美国求职
蓝策电子8 小时前
蓝牙AoA技术如何实现智慧机场人员与资产管控
大数据·经验分享·物联网·信息可视化·智慧城市