PDF转图片 JAVA

前言

以下是一个使用 Apache PDFBox 将 PDF 文件转换为图片的封装方法。这个方法将会把 PDF 的每一页转换为一张图片,并保存到指定的目录中。

1.添加依赖

首先,你需要在项目中添加 PDFBox 的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:

复制代码
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.29</version> <!-- 使用最新版本 -->
</dependency>

2.转换方法

java 复制代码
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.rendering.ImageType;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class PDFToImageConverter {

    /**
     * 将 PDF 文件转换为图片并保存到指定目录中。
     *
     * @param pdfFilePath    PDF 文件的路径
     * @param outputDirPath  输出图片保存的目录
     * @param imageFormat    图片格式,如 "png", "jpg"
     * @param dpi            每英寸的点数 (DPI),用于控制图像质量
     * @throws IOException   如果文件读取或写入时发生错误
     */
    public static void convertPDFToImages(String pdfFilePath, String outputDirPath, String imageFormat, int dpi) throws IOException {
        File pdfFile = new File(pdfFilePath);
        PDDocument document = PDDocument.load(pdfFile);
        PDFRenderer pdfRenderer = new PDFRenderer(document);

        File outputDir = new File(outputDirPath);
        if (!outputDir.exists()) {
            outputDir.mkdirs();
        }

        for (int page = 0; page < document.getNumberOfPages(); page++) {
            BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(page, dpi, ImageType.RGB);
            String outputFileName = outputDirPath + File.separator + "page_" + (page + 1) + "." + imageFormat;
            ImageIO.write(bufferedImage, imageFormat, new File(outputFileName));
        }

        document.close();
    }

    public static void main(String[] args) {
        try {
            String pdfFilePath = "input.pdf";  // 输入 PDF 文件路径
            String outputDirPath = "output_images";  // 输出图片保存目录
            String imageFormat = "png";  // 图片格式
            int dpi = 300;  // DPI 设置,300 是常见的高质量图像设置

            convertPDFToImages(pdfFilePath, outputDirPath, imageFormat, dpi);
            System.out.println("PDF 转换为图片成功!");
        } catch (IOException e) {
            System.err.println("PDF 转换为图片时发生错误: " + e.getMessage());
        }
    }
}

3.方法说明

  • pdfFilePath: 输入的 PDF 文件路径。
  • outputDirPath: 输出图片保存的目录路径。如果目录不存在,会自动创建。
  • imageFormat : 图片格式,例如 "png""jpg"
  • dpi: 图像的 DPI (Dots Per Inch),控制输出图片的分辨率。DPI 越高,图片越清晰。

4.使用说明

main 方法中的路径和参数修改为你自己的文件路径和所需的配置,然后运行程序。程序会将 PDF 的每一页转换为一张图片并保存到指定的输出目录中。

相关推荐
阿常111 小时前
解决Maven项目中报错“java不支持版本6即更高的版本 7”
java·开发语言·maven
汤姆大聪明1 小时前
Spring MVC入门
java·spring·mvc
Stay Passion2 小时前
Java 实用工具类:Apache Commons IO 的 IOUtils
java·开发语言·apache
今天也是元气满满的一天呢3 小时前
java学习之数据结构:一、数组
java·数据结构·学习
heyCHEEMS4 小时前
最大子段和 Java
java·开发语言·算法
-曾牛4 小时前
探索 Spring AI 的 ChatClient API:构建智能对话应用的利器
java·人工智能·spring boot·后端·spring·springai·ai指南
白露与泡影4 小时前
使用OAuth2保护Spring AI MCP服务!
java·后端·spring
magic 2454 小时前
Spring 命名空间注入:p、c 与 .util 的深度解析
java·前端·spring
橘猫云计算机设计5 小时前
基于springboot的金院银行厅预约系统的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!
java·数据库·spring boot·后端·爬虫·spring·毕业设计
空中湖5 小时前
纯前端专业PDF在线浏览器查看器工具
前端·pdf