当前位置: 首页 > news >正文

Java 开发指南:将 PDF 转换为多种图片格式

在实际开发中,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 {// 实例化 PdfDocumentPdfDocument 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 保存为 SVGpdf.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");// 保存整篇文档为 TIFFpdf.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) {// 加载 PDFPdfDocument pdf = new PdfDocument();pdf.loadFromFile(file.getAbsolutePath());// 遍历每页并保存为 PNGfor (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 自动化处理中的常用技能。

http://www.dtcms.com/a/388871.html

相关文章:

  • 【C++革命】董翔箭头函数库(xiang_arrow):在main函数里定义函数的终极方案
  • Ubuntu显示No operation system found
  • 【深度学习新浪潮】音频大模型方面有哪些最新的研究进展?
  • 第3节 创建视频素材时间线到剪映(Coze扣子空间剪映小助手零基础教程)
  • Unifi AP 网络路由取消使用 无线 Meshing
  • 计算机网络基础(四) --- TCP/IP网络结构(网络层) (上)
  • AR巡检与区块链融合:工业智能化的新引擎
  • Product Hunt 每日热榜 | 2025-09-18
  • WPF 字符竖向排列的排版格式(直排)显示控件
  • 多色零件自动化分拣与追溯系统案例和项目落地全计划
  • 自动化面试常见问题(英文版)
  • Kettle Carte 服务实战:从作业提交到日志监控全流程自动化(附 Shell 脚本)
  • 【数字展厅】数字科技展厅是怎么建设沉浸式体验的?
  • 2025网安周|美创科技多地联动,共筑数据安全防线
  • 数字大健康:一场重塑未来的健康革命,正被科技重新定义
  • 手搓一个可以自动化对比yolo模型性能曲线的工具
  • 海图科技双撕裂检测装置:筑牢矿用皮带运输安全防线
  • 32、语言模型训练全流程:从数据到模型的工程化实现
  • 打造一款支持 Mermaid 与 ECharts 的 Markdown 编辑器:基于 Vditor 的实战指南
  • 《算法闯关指南:优选算法-双指针》--07三数之和,08四数之和
  • 华为显卡部署
  • Salesforce知识点:LWC(Lightning Web Components)面试题及答案
  • 【C/C++】一文通关C/C++内存管理:动态开辟改朝换代——new/delete
  • 安卓13_ROM修改定制化-----修改rom 实现“usb安装”选项默认开启
  • Git 常用命令速查表
  • Day45 51单片机UART串口通信与数码管时钟系统
  • 企业级图像AIGC技术观察:Seedream 4.0 模型能力与应用场景分析
  • Kurt-Blender零基础教程:第2章:建模篇——第2节:什么是修改器与建模马拉松
  • fbx 导入到 blender 出现很多黑色虚线的解决方法
  • 记力扣.2779 数组的最大美丽值 练习理解