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

相关推荐
赛姐在努力.6 分钟前
Spring DI详解--依赖注入的三种方式及优缺点分析
java·mysql·spring
星空的资源小屋21 分钟前
网易UU远程,免费电脑远程控制软件
人工智能·python·pdf·电脑
IvanCodes27 分钟前
六、Docker 核心技术:Dockerfile 指令详解
java·数据库·docker
_oP_i37 分钟前
Java 服务接口中解决跨域(CORS,Cross-Origin Resource Sharing)问题
java·开发语言
用户9446814013501 小时前
部分替代Lombok?不可变数据的载体?一篇文章带你了解JDK16正式引用的record类型!
java
用户0332126663671 小时前
Java 高效处理 Word 文档:查找并替换文本的全面指南
java
轮到我狗叫了1 小时前
力扣.1054距离相等的条形码力扣767.重构字符串力扣47.全排列II力扣980.不同路径III力扣509.斐波那契数列(记忆化搜索)
java·算法·leetcode
渣哥1 小时前
你遇到过 ConcurrentModificationException 吗?其实很常见
java
lunzi_fly1 小时前
【源码解读之 Mybatis】【基础篇】-- 第1篇:MyBatis 整体架构设计
java·mybatis
JIngJaneIL2 小时前
汽车租赁|基于Java+vue的汽车租赁系统(源码+数据库+文档)
java·vue.js·spring boot·汽车·论文·毕设·汽车租赁系统