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 自动化处理中的常用技能。