• 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格式
    在这里插入图片描述
    转换后

    在这里插入图片描述

  • 相关阅读:
    代码随想录算法训练营第五十一天| LeetCode 121 买卖股票的最佳时机、LeetCode 122 买卖股票的最佳时机II
    基于PHP+MySQL汽车展览会网站的设计与实现
    新一代网络请求库:python-httpx库
    【Flink】
    电力电子转战数字IC20220725day56——寄存器模型
    LabVIEW应用开发——基本函数(一)
    在T3开发板上实现SylixOS最小系统(0)—— 写在前面的话
    这就叫“面试造火箭,工作拧螺丝!”
    git PR合并提交(rebase方式)
    3G网络关闭,4G还会远吗?
  • 原文地址:https://blog.csdn.net/qq_41841482/article/details/133013109