• JAVA实现PDF转图片


    前言

    使用wps自带的转换工具,需要花钱,不花钱的话还带水印。于是,使用java程序将pdf转换为图片。

    代码

    依赖
    <dependencies>
        <dependency>
            <groupId>org.apache.pdfboxgroupId>
            <artifactId>fontboxartifactId>
            <version>2.0.4version>
        dependency>
        <dependency>
            <groupId>org.apache.pdfboxgroupId>
            <artifactId>pdfboxartifactId>
            <version>2.0.4version>
        dependency>
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    方法
        /**
         * 转换全部的pdf
         * @param pdfFile 需要转换的pdf文件
         * @param fileAddress 图片文件保存地址
         * @param filename 图片文件名
         * @param type 图片类型
         */
        private static void pdf2png(File pdfFile,String fileAddress,String filename,String type){
            try {
                PDDocument doc = PDDocument.load(pdfFile);
                PDFRenderer renderer = new PDFRenderer(doc);
                int pageCount = doc.getNumberOfPages();
                for (int i = 0; i < pageCount; i++) {
                    BufferedImage image = renderer.renderImageWithDPI(i, 144);
                    ImageIO.write(image,type,new File(fileAddress+"\\"+filename+"_"+(i+1)+"."+type));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 指定转换页数
         * @param pdfFile 需要转换的pdf文件
         * @param fileAddress 图片文件保存地址
         * @param filename 图片文件名
         * @param type 图片类型
         * @param startIndex 起始页
         * @param endIndex 结束页
         */
        private static void pdf2png(File pdfFile,String fileAddress,String filename,String type,int startIndex,int endIndex){
            try {
                PDDocument doc = PDDocument.load(pdfFile);
                PDFRenderer renderer = new PDFRenderer(doc);
                int pageCount = doc.getNumberOfPages();
                for (int i = startIndex; i < endIndex; i++) {
                    BufferedImage image = renderer.renderImageWithDPI(i, 144);
                    ImageIO.write(image,type,new File(fileAddress+"\\"+filename+"_"+(i+1)+"."+type));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    测试结果
        public static void main(String[] args) {
            File file = new File("D:\\BaiduNetdiskDownload\\JOJO彩色版第3部:星尘斗士_15.pdf");
            pdf2png(file,"D:\\BaiduNetdiskDownload\\JOJO","image","png",92,100);
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    pdf格式
    在这里插入图片描述
    转换后

    在这里插入图片描述

  • 相关阅读:
    qt 消息(事件)机制
    最前端|一文详解Vue3.x 中 hooks 函数封装和使用
    SpringCloud集成RocketMQ
    解决typescript报错=》不能将类型“undefined”分配给类型“boolean”
    Web自动化测试 —— cypress测试框架
    局域网监控软件如何防止数据泄密
    Java.lang.Class类 isAnonymousClass()方法有什么功能呢?
    Linux - 系统调用
    使用单调栈来解决的一些问题
    [附源码]java毕业设计游戏账号交易平台
  • 原文地址:https://blog.csdn.net/qq_41841482/article/details/133013109