美文网首页
Java PDF文件逐页转换为图片

Java PDF文件逐页转换为图片

作者: LBQY | 来源:发表于2018-10-15 23:08 被阅读0次

一直以来,Java体系就缺少操作PDF文件的类库,直到PDFBox的出现。PDFBox是一款基于Java的优秀的PDF文件处理类库,支持从PDF文件中提取文本、将图片插入PDF文件、将PDF文件逐页的生成图片等等。这里主要讲一下将PDF文件逐页生成图片。

1、PDF文件逐页生成图片(基于2.x版本)

PDDocument doc = PDDocument.load(pdfFile);

int pageCount = doc.getNumberOfPages();

PDFRenderer pdfRenderer = new PDFRenderer(doc);

for (int pageIndex=0; pageIndex<pageCount; pageIndex++) {

        BufferedImage image = pdfRenderer.renderImageWithDPI(pageIndex, 105, ImageType.RGB);

        ImageIOUtil.writeImage(image, imageFilePath, 105);

}

doc.close();

上述代码能将一个PDF文件逐页转换为图片。笔者在自己的Windows机器上能正常运行,将一个带有中文填充字符的PDF文件逐页转换为了图片。但是将服务部署到Linux机器上后,发现中文填充字符变成了方框,也就是出现了乱码。

2、依赖系统字体

经仔细研究,PDFbox将PDF文件转换为图片的过程中,需要操作系统上安装了PDF文件中使用的字体,不然可能出现乱码。而PDF文件中用到的字体,可以从【文件】==》【属性】==【字体】中查看。可以在linux上使用fc-list指令查看已经安装的字体,比对找出缺少的字体,然后逐一安装。

3、PDFbox会缓存字体信息

安装完相应的字体后,发现乱码还在(空的框框),后来从PDFbox的日志上得知,PDFbox在应用启动的时候会将字体信息缓存到内存中。于是想到重启应用,重启应用后,日志中会看到已探测到新的字体,并逐一加载到内存缓存,重新执行命令,可以看到乱码消失,图片正常了。

相关文章

网友评论

      本文标题:Java PDF文件逐页转换为图片

      本文链接:https://www.haomeiwen.com/subject/aoxxjftx.html