Java开发之将PDF转换为多种图片格式的方法指南

 更新时间:2025年09月19日 08:22:16   作者:用户372157426135  
本文将详细介绍如何使用 Java 将 PDF 转换为 PNG、JPG、TIFF 以及 SVG 格式,同时给出完整示例代码和解析,有需要的小伙伴可以参考一下

引言

在实际开发中,PDF 文件广泛用于存储合同、报告、发票以及技术文档。然而,有时我们需要将 PDF 转换为图片格式,以便在网页上显示、生成缩略图、进行图像处理或打印。例如:

  • 在网页或系统中展示 PDF 页面预览;
  • 将发票或报表转换为 PNG/JPG 方便打印或嵌入其他文档;
  • 对 PDF 页面进行 OCR 或图像处理。

借助编程方式批量处理 PDF 转图片,能够大幅提高效率,保证输出一致性。本文将详细介绍如何使用 Java 将 PDF 转换为 PNG、JPG、TIFF 以及 SVG 格式,同时给出完整示例代码和解析。

环境准备

引入 Spire.PDF for Java

Spire.PDF for Java 是一个功能强大的 PDF 操作库,支持 PDF 的读取、编辑、转换等多种功能。

如果项目使用 Maven,可以在 pom.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>11.8.3</version>
    </dependency>
</dependencies>

非 Maven 项目可直接下载 JAR 包并导入项目。引入完成后即可使用 import com.spire.pdf.* 操作 PDF 文档。

PDF 转 PNG / JPG

使用场景及说明:

当我们需要在网页或系统中展示 PDF 页面预览,或者生成报表、发票等文档的缩略图、便于打印或嵌入到其他文档中时,通常会选择将 PDF 转为位图格式(如 PNG 或 JPG)。PNG 支持透明背景,适合网页显示;JPG 压缩率高,适合打印或存储大量图像。以下示例展示如何将 PDF 的每一页转换为高分辨率图片,并保存为单独文件。

import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImageType;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class PDFtoImage {
    public static void main(String[] args)throws IOException {
        // 实例化 PdfDocument
        PdfDocument pdf = new PdfDocument();

        // 加载 PDF 文档
        pdf.loadFromFile("示例文档.pdf");

        // 遍历 PDF 每一页
        for (int i = 0; i < pdf.getPages().getCount(); i++) {
            // 将页面保存为 Bitmap 图片,并设置水平和垂直分辨率
            BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap, 500, 500);

            // 保存为 PNG 文件
            File file = new File(String.format("转换图片-%d.png", i));
            ImageIO.write(image, "PNG", file);
        }

        // 关闭文档
        pdf.close();
    }
}

说明:

  • PdfDocument pdf = new PdfDocument();:创建 PDF 文档对象。
  • pdf.loadFromFile("示例文档.pdf");:加载待处理 PDF。
  • pdf.saveAsImage(i, PdfImageType.Bitmap, 500, 500);:将第 i 页转换为 Bitmap 图像,并设置 500×500 DPI。
  • ImageIO.write(image, "PNG", file);:将 BufferedImage 保存为 PNG 文件。将 "PNG" 改为 "JPEG" 即可生成 JPG 图片。

PDF 转 SVG

使用场景及说明:

如果希望在网页或应用程序中展示矢量预览,而不失真,SVG 是最佳选择。与位图不同,矢量图可以任意缩放,保证清晰度。使用 PDF 转 SVG 可以直接将 PDF 页面转换为可嵌入 HTML 的矢量图,适合需要动态缩放或进行前端渲染的场景。

import com.spire.pdf.*;

public class PDFToSVG {
    public static void main(String[] args) {
        // 创建 PdfDocument 对象
        PdfDocument pdf = new PdfDocument();

        // 加载 PDF 文档
        pdf.loadFromFile("示例文档.pdf");

        // 将 PDF 保存为 SVG
        pdf.saveToFile("转换结果.svg", FileFormat.SVG);
    }
}

说明:

  • FileFormat.SVG 指定输出为 SVG 格式。
  • 该方法将 PDF 文档页面保存为多个 SVG 文件,适合矢量图预览或网页嵌入。

PDF 转 TIFF

使用场景及说明:

TIFF 格式常用于打印、档案保存和多页图像处理。与 PNG/JPG 不同,TIFF 支持多页文档,可以一次性保存整个 PDF 或指定页码。此方法适合需要生成多页打印文档、档案存储或在图像处理软件中进一步处理 PDF 内容的场景。

import com.spire.pdf.*;

public class PDFtoTiff {
    public static void main(String[] args) {
        // 加载 PDF 文档
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("示例文档.pdf");

        // 保存整篇文档为 TIFF
        pdf.saveToTiff("转换结果.tiff");

        // 保存指定页面范围为 TIFF(第 2 页到第 3 页,设置 DPI)
        pdf.saveToTiff("转换结果部分.tiff", 1, 2, 400, 600);
    }
}

说明:

  • saveToTiff(String fileName):将整个 PDF 转为 TIFF 文件。
  • saveToTiff(String fileName, int startPage, int endPage, int xDpi, int yDpi):只转换指定页,并设置水平和垂直分辨率。

批量 PDF 转图片

使用场景及说明:

在实际项目中,经常会遇到需要处理大量 PDF 文件的需求,例如批量生成报表预览图、发票图片或图像备份。手动处理效率低且容易出错,使用程序批量处理可大幅提高效率,并保持输出一致性。

import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImageType;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class BatchPDFtoImage {
    public static void main(String[] args) throws IOException {
        // 指定 PDF 文件夹
        File folder = new File("pdf文件夹");
        File[] files = folder.listFiles((dir, name) -> name.endsWith(".pdf"));

        for (File file : files) {
            // 加载 PDF
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile(file.getAbsolutePath());

            // 遍历每页并保存为 PNG
            for (int i = 0; i < pdf.getPages().getCount(); i++) {
                BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap, 300, 300);
                String outputFile = "图片输出/" + file.getName().replace(".pdf", "_页_" + (i + 1) + ".png");
                ImageIO.write(image, "PNG", new File(outputFile));
            }

            System.out.println(file.getName() + " 已成功转换为图片");
            pdf.close();
        }
    }
}

说明:

  • 遍历指定文件夹中所有 PDF 文件,逐一处理。
  • 每页 PDF 保存为 PNG,并自动生成文件名。
  • 设置 300×300 DPI,适合一般显示和打印。

总结

本文详细介绍了如何使用 Java 将 PDF 文档转换为多种图片格式,包括 PNG、JPG、TIFF 和 SVG。通过设置分辨率、指定页码和批量处理,可以满足不同应用场景的需求,如网页预览、打印、图像处理等。

掌握 PDF 转图片的编程方法,能够提高开发效率,确保输出效果一致,是开发者在 PDF 自动化处理中的常用技能。

到此这篇关于Java开发之将PDF转换为多种图片格式的方法指南的文章就介绍到这了,更多相关Java PDF转图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java注解示例详解(含底层原理)

    Java注解示例详解(含底层原理)

    注解在现代Java开发中扮演着重要角色,广泛应用于框架开发、代码生成和运行时功能扩展,下面这篇文章主要介绍了Java注解底层原理的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-10-10
  • java 中InputStream,String,File之间的相互转化对比

    java 中InputStream,String,File之间的相互转化对比

    这篇文章主要介绍了java 中InputStream,String,File之间的相互转化对比的相关资料,需要的朋友可以参考下
    2017-04-04
  • 深入了解Spring中的依赖注入DI

    深入了解Spring中的依赖注入DI

    这篇文章主要介绍了Spring 中的依赖注入,包括注入的方式,写法,该选择哪个注入方式以及可能出现的循环依赖问题等内容,需要的可以参考一下
    2023-06-06
  • 浅谈Java工程读取resources中资源文件路径的问题

    浅谈Java工程读取resources中资源文件路径的问题

    下面小编就为大家带来一篇浅谈Java工程读取resources中资源文件路径的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • java数据库批量插入数据的实现

    java数据库批量插入数据的实现

    本文主要介绍了java数据库批量插入数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Springboot使用redisson + 自定义注解实现消息的发布订阅(解决方案)

    Springboot使用redisson + 自定义注解实现消息的发布订阅(解决方案)

    Redisson是一个基于Redis的Java驻留内存数据网格(In-Memory Data Grid)和分布式锁框架,它提供了一系列的分布式Java对象和服务,可以帮助开发者更方便地使用Redis作为数据存储和分布式锁的解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Spring Boot和Vue前后端分离项目架构的全过程

    Spring Boot和Vue前后端分离项目架构的全过程

    前后端分离是目前互联网开发中比较广泛使用的开发模式,主要是将前端和后端的项目业务进行分离,下面这篇文章主要给大家介绍了关于Spring Boot和Vue前后端分离项目架构的相关资料,需要的朋友可以参考下
    2022-04-04
  • Java List 集合如何去除null元素

    Java List 集合如何去除null元素

    这篇文章主要介绍了Java List 集合如何去除null元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 如何把char数组转换成String

    如何把char数组转换成String

    这篇文章主要介绍了如何把char数组转换成String问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Java设计模式之单例模式实例详解【懒汉式与饿汉式】

    Java设计模式之单例模式实例详解【懒汉式与饿汉式】

    这篇文章主要介绍了Java设计模式之单例模式,简单说明了单例模式的原理并结合具体实例形式分析了单例模式中懒汉式与饿汉式的具体实现与使用技巧,需要的朋友可以参考下
    2017-09-09

最新评论