• java实现pdf转换图片


    一、需求

       将PDF文档类转换成图片形式。    


    二、实现方式

        2.1 pdfbox     

     1         PDDocument doc = null;
     2         try {
     3             doc = PDDocument.load(sourceFile);
     4             PDFRenderer renderer = new PDFRenderer(doc);
     5             int pageCount = doc.getNumberOfPages();
     6             for (int i = 0; i < pageCount; i++) {
     7                 BufferedImage image = renderer.renderImageWithDPI(i, DPI); // 162.8
     8                 ImageIO.write(image, ConvertImageConst.JPG, new File(filepathNoSuffix + File.separator + i + ConvertImageConst.SUFFIX_JPG));
     9             }
    10             log.info("jpg_ok. space-time: {}, pageSize={} ", (System.currentTimeMillis() - startTime), pageCount);
    11             return pageCount;
    12         } catch (IOException e) {
    13             log.error("pdfDocumentRender IOException {} ", e);
    14         } catch (Error e) {
    15             log.error("pdfDocumentRender Error {} ", e);
    16         } finally {
    17             try {
    18                 if (doc != null) {
    19                     doc.close();
    20                 }
    21             } catch (IOException e) {
    22                 log.error("pdfDocumentRender finally IOError ", e.getMessage());
    23             }
    24             lock.unlock();
    25         }

        2.2 ghostscript 

     1  gswin64 -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=jpeg -sOutputFile=test%03d.jpg  0002.pdf
     2 
     3     命令:
     4 
     5      gswin64 主程序
     6 
     7      -params: 
     8 
     9      -sDEVICE=jpeg                 // jpeg格式
    10 
    11      -sOutputFile=test%03d.jpg // 输出的图片名称 %03d 三位数字 %d 一位数字
    12 
    13       0002.pdf  //待转换的pdf文件

    三、比较

    实现方式 优点   缺点
    pdfbox maven引入既可开发 转换速度慢,且可能内存溢出 
    ghostscript 转换速度快 依赖ghostscript插件

    如果觉得文章对您有用,请点下推荐。您的支持将鼓励我继续创作!

  • 相关阅读:
    19.模块化
    20.ES7新特性
    22.ES9
    21.ES8新特性
    RabbitMQ:排他性队列(Exclusive Queue)
    为什么要使用消息队列
    收集RabbitMQ的用户
    身份管理提供商:Gigya和PingIdentity
    HTTP协议原理(详细)
    转:Linux下高并发socket最大连接数所受的各种限制
  • 原文地址:https://www.cnblogs.com/pengsn/p/14355058.html
Copyright © 2020-2023  润新知