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插件 |
如果觉得文章对您有用,请点下推荐。您的支持将鼓励我继续创作!