zoukankan      html  css  js  c++  java
  • 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插件

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

  • 相关阅读:
    RSA加密
    各种正则
    用Fragment制作的Tab页面产生的UI重叠问题
    Android源码下载
    Android Studio使用百度地图问题总结
    Android获取网络类型
    Android Studio类中实现Serializable自动生成serialVersionUID
    【Android开发】如何设计开发一款Android App
    UIViewController生命周期
    微信支付开发经验分享
  • 原文地址:https://www.cnblogs.com/pengsn/p/14355058.html
Copyright © 2011-2022 走看看