近期需要将 pdf 文件转成高清图片,使用库是 pdfbox、fontbox。可以使用 renderimagewithdpi 方法指定转换的清晰度,当然清晰度越高,转换需要的时间越长,转换出来的图片越大,越清晰。

说明:由于 adobo 软件越来越强大,支持的格式越来越多,这造成了 java 软件有些不能转换。所以对于新的格式可能会有转换问题。

1 引入依赖

org.apache.pdfbox

pdfbox

2.0.16

org.apache.pdfbox

fontbox

2.0.16

2 代码如下

public static void convertpdf2image(string pdfpath, string imagedirpath) {

log.info("start convert pdf file:[{}] to image path:[{}]", pdfpath, imagedirpath);

if (!new file(pdfpath).exists()) {

log.info("pdffilename:[{}] not exist", pdfpath);

return;

}

if (!new file(imagedirpath).exists()) {

log.info("imagedir:[{}] not exist", imagedirpath);

return;

}

byte[] pdfcontent = fileutil.getfilecontentbyte(pdfpath);

string filename = fileutil.getfilename(pdfpath);

float dpi = 200;

convertpdf2image(pdfcontent, filename, imagedirpath, dpi);

log.info("convert pdf file:[{}] to image success", filename);

}

private static void convertpdf2image(byte[] pdfcontent, string pdffilename, string imagedirpath, float dpi) {

log.info("convert pdffilename:[{}] to imagedir:[{}] with dpi:[{}]", pdffilename, imagedirpath, dpi);

if (arrayutils.isempty(pdfcontent)) {

return;

}

// 为了保证显示清除,至少 90

if (dpi < 90) {

dpi = 90;

}

string basesir = imagedirpath;

if (basesir.endswith("/") || basesir.endswith("\\")) {

basesir += pdffilename + "_";

} else {

basesir += file.separator + pdffilename + "_";

}

pddocument document = null;

bufferedoutputstream outputstream = null;

try {

document = pddocument.load(pdfcontent);

int pagecount = document.getnumberofpages();

pdfrenderer pdfrenderer = new pdfrenderer(document);

string imgpath;

for (int i = 0; i < pagecount; i++) {

imgpath = basesir + i + ".png";

outputstream = new bufferedoutputstream(new fileoutputstream(imgpath));

bufferedimage image = pdfrenderer.renderimagewithdpi(i, dpi, imagetype.rgb);

imageio.write(image, "png", outputstream);

outputstream.close();

log.info("convert to png, total[{}], now[{}], ori:[{}], des[{}]", pagecount, i + 1, pdffilename, imgpath);

}

} catch (ioexception e) {

log.error("convert pdf to image error, pdffilename:" + pdffilename, e);

} finally {

ioutil.closesilently(outputstream);

ioutil.closesilently(document);

}

}

// ioutil.closesilently 代码

public static void closesilently(closeable io) {

if (io != null) {

try {

io.close();

} catch (ioexception e) {

e.printstacktrace();

}

}

}

在实际使用中遇到问题

1)error o.a.p.contentstream.pdfstreamengine 911 - cannot read jbig2 image: jbig2-imageio is not installed

2)cannot read jpeg2000 image: java advanced imaging (jai) image i/o tools are not installed

以上两个问题需要使用 jai 插件和 jbig2 插件支持,通过引入 jai-imageio-core、jai-imageio-jpeg2000、jbig2-imageio

com.github.jai-imageio

jai-imageio-core

1.4.0

com.github.jai-imageio

jai-imageio-jpeg2000

1.3.0

org.apache.pdfbox

jbig2-imageio

3.0.2

参考问题文件

https://github.com/crazycodelove/studentservice/blob/master/sys/src/main/resources/pdffile/000208-p1.pdf

https://github.com/crazycodelove/studentservice/blob/master/sys/src/main/resources/pdffile/001659-p14.pdf

https://github.com/crazycodelove/studentservice/blob/master/sys/src/main/resources/pdffile/main%20doc.pdf

参考文献

https://stackoverflow.com/questions/42169154/pdfbox1-8-12-convert-pdf-to-white-page-image

https://stackoverflow.com/questions/20424796/pdf-box-generating-blank-images-due-to-jbig2-images-in-it

https://blog.csdn.net/qq_15801963/article/details/80746830

https://my.oschina.net/u/2345654/blog/1058192

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

java文件转换pdf模糊_java 库将 pdf 文件转换成高清图片方法相关推荐

  1. 怎么把pdf转换成高清图片

    怎么把pdf转换成高清图片?可以使用以下两种方法: 方法一:使用Adobe Acrobat Pro DC 1.打开需要转换的PDF文件,点击"文件"菜单中的"导出为&qu ...

  2. MATLAB的figure文件保存成高清图片的技巧01

    figure文件保存成高清图片的技巧01 鉴于广大砖友在用MATLAB保存figure图片时,会出现图片分辨率不够高,粘贴使用不清晰,导致文章整体视觉效果欠佳的情况,我觉得有义务有责任分享一下我的经验 ...

  3. PDF转成高清图片怎么转?借助这几款软件轻松搞定

    大家应该都知道PDF是一种易储存且兼容性强的文件格式,很多工作中的小伙伴应该都喜欢使用它来保存文件.但是当你想将一个较大的PDF文件发送给别人查阅时,会不会需要花费较多的时间?告诉你一个更简单的方法, ...

  4. asp.net pdf如何转换成tif_如何将pdf转换成高清图片?你需要这个软件!|电脑|pdf|转换器...

    如今在办公中很多人都喜欢将图片保存为PDF格式,因为PDF格式更便捷.但如果想在PDF文件中选取其中一些图片出来,那么应该如何操作呢?小编在这里给大家分享两个PDF转图片的方法,轻松帮助你解决格式转换 ...

  5. LaTex将普通图片格式转换成高清图片格式eps

    在我们使用LaTex进行文章的创作(copy)时,难免会需要插入一些图片,插入图片的格式一般有png.jpg和eps等,大部分时候,如果为了方便起见,可以直接使用前两个格式插入.但是为了追求更高清的图 ...

  6. 怎么把word转换pdf,pdf转换word ,pdf转换成高清图片

    方法一:一个成套的软件,包含了,word -->pdf ,Pdf->word,pdf-->图片 迅捷PDF在线转换器  地址在这 (http://app.xunjiepdf.com/ ...

  7. 如何将PDF文件保存成高清的图片?

    Pdf格式的文件在我们的工作中是非常常使用的一种文件格式,尤其在传输阅读打印这方面,使用起来比其他的文件形式更方便好用.在日常工作中我们经常需要将PDF文件保存成一张一张的高清图片文件,方便我们在工作 ...

  8. 多张CAD图纸文件如何快速转换成高清黑白BMP格式?

    多张CAD图纸文件如何快速转换成高清黑白BMP格式?将CAD图纸文件进行转换成图片格式是为了方便将其进行打开查看或是传输等操作,将其进行转换成图片中的BMP格式就是其中的一种,具体应该怎么样进行操作, ...

  9. 想知道PDF转高清图片软件哪个好?

    张琳是一名设计师,她经常需要将自己的设计作品整理成PDF文档,以便向客户展示和交付.然而,有时客户需要对设计进行更详细的审查,而PDF格式的文件并不方便进行缩放和查看细节.这一问题让张琳感到非常困扰, ...

  10. 进行将多张CAD图纸转换成高清WMF格式的操作是什么?

    进行将多张CAD图纸转换成高清WMF格式的操作是什么?WMF格式是图片格式中的一种,为了方便将CAD图纸文件进行查看我们会需要将其进行格式间的转换操作,将其进行转换成图片格式中的WMF格式就是其中的一 ...

最新文章

  1. Python基础16-模块与包基础01
  2. python基础知识面试题-Python基本面试解答由浅入深—简答题
  3. Swift UITableView嵌套UICollectionView点击事件冲突(点击事件穿透)
  4. 和ur的区别_UR机械臂simscape正逆解仿真
  5. 数据库连接池为什么要用threadlocal呢?(不用会怎样?)
  6. php 源文件加密工具PHP Screw
  7. 我又来学ElasticSearch了。。。
  8. Python:cv2.imwrite无法存储带有中文路径图片
  9. USB2.0协议学习笔记---USB工作过程(类的方法)
  10. c# 异常处理 try-catch-finally
  11. 计算机辅助三维参数化设计是什么,滚子链轮的计算机辅助三维参数化设计.pdf...
  12. 启动优化之Android-Startup
  13. 全网首发 nuScenes数据集(百度网盘 + 迅雷网盘) + 下载方法
  14. 如何利用COOC软件绘制动态交互图?
  15. 【C++】C++基础语法
  16. Markdown怎么加入emoji
  17. 矩阵求和c语言通俗易懂
  18. zipkin链路追踪详解
  19. Redis启动和连接
  20. 热插拔机制之udev和mdev

热门文章

  1. 触摸屏在环卫车辆上装控制系统的应用
  2. java_232_GOF23设计模式_建造者模式详解_练习
  3. idea 一直在updating index的问题
  4. python抓取淘宝评论_python3抓取淘宝评论内容
  5. 路由入口与vue布局入口
  6. Ubuntu16.04添加Pycharm快捷方式在启动器并修复问号图标问题
  7. linux 设置mail
  8. 微电影|小白创作微电影的辛酸
  9. WinEdt字体大小修改
  10. 运算放大器实用电路大全