近期需要将 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告诉你:为何年终奖多发一元,到手却少两千多?
  2. cxGrid导出Excel货币符号问题
  3. APUS 朱辉:移动应用出海的大数据建设挑战
  4. Knockout v3.4.0 中文版教程-14-控制文本内容和外观-style绑定
  5. 盲盒商城app开发需要具备哪些核心功能,盲盒商城app源码成品分享
  6. sql Server配置管理器
  7. [NAS] Synology (群晖) DSM相关服务及套件安装
  8. 【Python】日期处理-中国法定节假日
  9. ①读后感之《当我们谈论爱情时我们在谈论什么》┊(美)雷蒙德.卡佛
  10. 爬虫爬取煎蛋网美女图片
  11. 折纸测珠峰python程序_哪个大神能帮忙用python做一下这个程序,真的万分感谢
  12. map映射的基础用法
  13. 微信小程序云开发 · 从0搭建商业级校园跑腿平台(已开源)
  14. 构造二叉树-前序遍历
  15. Huggingface的from pretrained的下载代理服务器方法设置
  16. LeetCode矩阵题——用辐射来理解
  17. 太空射击第13课: 爆炸效果
  18. 大批量查询邮政国际物流并查看更新量为2的单号
  19. 软银在日本推物联网单车共享
  20. VSCode插件之实时字数统计与选中词英汉互译

热门文章

  1. 计算机二级是专业技术职务吗,计算机二级算中级技能证吗
  2. 低效程序员的九个坏习惯
  3. mp3处理工具(mp3agic)
  4. 田刚:庞加莱猜想与几何
  5. 电脑开机一直自动重启
  6. DDR3 full empty如何产生?
  7. 一、Python-简介
  8. Comsol学习——经典案例:插销支架受力分析
  9. python中的箭头符号
  10. 无法上网的N种解决方法