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

相关推荐
身如柳絮随风扬4 小时前
Java中的CAS机制详解
java·开发语言
风筝在晴天搁浅6 小时前
hot100 78.子集
java·算法
故事和你917 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Configure-Handler7 小时前
buildroot System configuration
java·服务器·数据库
:Concerto8 小时前
JavaSE 注解
java·开发语言·sprint
电商API_180079052478 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
一点程序9 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹9 小时前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_949809599 小时前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
vx_BS813309 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计