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

相关推荐
我命由我1234519 分钟前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别
宠友信息22 分钟前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue
long3161 小时前
封装(Encapsulation)
java·人工智能·ai·ai编程
yaoxin5211231 小时前
502. Java 反射 - 编写 MessageInterceptor 类
java·开发语言
风流 少年1 小时前
Spring AI 2.0:阿里云百炼平台(工作流应用)
java·后端·spring
长谷深风1111 小时前
AI Tool 设计:粒度、参数与错误恢复怎么做
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计
QQ_21696290962 小时前
【项目编号:project95315】SpringBoot公共自习室管理系统:座位预约、房间管理、签到核销、公告规则完整实战
java·spring boot·后端
嵌入式阿蔡3 小时前
面试高频考点 01:volatile / 中断 / 堆栈 八股精讲
java·面试·职场和发展·嵌入式实时数据库
秋饼3 小时前
LangChain4j + Java 实现企业级 Text-to-SQL 智能问数系统:从自然语言到安全可控的数据洞察
java·ai·技术分享·后端开发
Escalating_xu3 小时前
【C++ STL简介】从六大组件到容器、迭代器与算法协作
java·c++·算法