当前位置: 首页 > article >正文

Java实现pdf转图片

第一步

 <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.32</version> <!-- 请检查最新版本 -->
</dependency>

第二步

package com.example.demo.file.pdf;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;

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

public class PdfToImageConverter {
    public static void main(String[] args) {
        String pdfFilePath = "C:\\Users\\EDY\\Desktop\\output\\output.pdf"; // PDF文件路径
        String outputDirectory = "C:\\Users\\EDY\\Desktop\\directory"; // 输出目录路径

        convertPdfToImages(pdfFilePath, outputDirectory);
    }

    public static void convertPdfToImages(String pdfFilePath, String outputDirectory) {
        try (PDDocument document = PDDocument.load(new File(pdfFilePath))) {
            PDFRenderer renderer = new PDFRenderer(document);
            File outputDir = new File(outputDirectory);

            // 确保输出目录存在
            if (!outputDir.exists() && !outputDir.mkdirs()) {
                throw new IOException("Unable to create output directory: " + outputDirectory);
            }

            for (int page = 0; page < document.getNumberOfPages(); ++page) {
                BufferedImage bim = renderer.renderImageWithDPI(page, 300, ImageType.RGB);
                String fileName = "page_" + (page + 1) + ".png";
                File outputFile = new File(outputDir, fileName);
                ImageIO.write(bim, "PNG", outputFile);
            }
            System.out.println("Picture created successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


http://www.kler.cn/a/383941.html

相关文章:

  • 内部知识库:优化企业培训流程的关键驱动力
  • 小北的字节跳动青训营与调用模型:调用模型:OpenAI API vs 微调开源Llama2/ChatGLM(持续更新中~~~)
  • hive表批量造数据
  • HT32201 2x15W+30W免电感2.1声道D类音频功放
  • 在docker中搭建redis哨兵环境
  • ubuntu 22.04 server python3 包 LTS
  • ipv6的 fc00(FC00::/7) 和 fec0(FEC0::/10)
  • 深度学习:Masked Self-Attention 详解
  • 【Chapter 2_ Sentosa_DSML Community Edition Product Features】
  • 职场浅谈:情商高的“4”种表现,情商高的人才更容易走向成功
  • yolo v5 开源项目
  • 基于Spring Boot的中小型制造企业质量管理系统设计与实现,LW+源码+讲解
  • Cesium 贝塞尔曲线
  • 【Ai测评】GPT Search偷偷上线,向Google和微软发起挑战!
  • win11安装最新rabbitmq
  • SSM— spring,springMVC,mybatis整合
  • Flutter鸿蒙next 实现一个计算器应用
  • SpringBoot中使用SpringTask实现定时任务
  • OpenDroneMap Webodm
  • java-web-苍穹外卖-day1:软件开发步骤简化版+后端环境搭建
  • OCR、语音识别与信息抽取:免费开源的AI平台在医疗领域的创新应用
  • Rust智能指针和生命周期
  • 栈虚拟机和寄存器虚拟机,有什么不同?
  • 【运动的&足球】足球场景目标检测系统源码&数据集全套:改进yolo11-ASF-P2
  • 如何基于pdf2image实现pdf批量转换为图片
  • leetcode动态规划(二十六)-最长重复子数组