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 的每一页转换为一张图片并保存到指定的输出目录中。

相关推荐
gladiator+12 分钟前
Redis之BigKey的常见问题以及大厂相关面试题
java·数据库·redis
Controller-Inversion42 分钟前
岛屿问题(dfs典型问题求解)
java·算法·深度优先
okseekw1 小时前
Java 字符串三巨头:String、StringBuilder、StringJoiner —— 初学者避坑指南 🤯
java
毕设源码余学姐1 小时前
计算机毕设 java 中医药药材分类采购网站 SSM 框架药材交易平台 Java 开发的分类采购与订单管理系统
java·开发语言·课程设计
BD_Marathon1 小时前
【JUC】并发与并行
java
okseekw1 小时前
Java String类详解:不可变性、创建方式与比较方法
java
q***64971 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
降临-max2 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
带刺的坐椅2 小时前
Solon AI 开发学习5 - chat - 支持哪些模型?及方言定制
java·ai·openai·solon
悟空码字2 小时前
单点登录:一次登录,全网通行
java·后端