码迷,mamicode.com
首页 > 其他好文 > 详细

使用pdfBox实现pdf转图片,解决中文方块乱码等问题

时间:2019-03-11 00:58:58      阅读:671      评论:0      收藏:0      [点我收藏+]

标签:oms   artifact   back   mkdir   ima   mamicode   image   utils   buffer   

 一、引入依赖

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>fontbox</artifactId>
    <version>2.0.13</version>
</dependency>
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.13</version>
</dependency>

 二、PDF转PNG代码

String pdfBase64 = "XXXXX";
PDDocument pdDocument = PDDocument.load(Base64Utils.decodeFromString(pdfBase64));
PDFRenderer renderer = new PDFRenderer(pdDocument);
BufferedImage bufferedImage = renderer.renderImage(0);
ImageIO.write(bufferedImage, "png", new File("xxx.png"));

 三、PNG中文方块乱码

  查看linux服务器上的字体库如下。

  技术图片

  转换后的PNG如下。

   技术图片

  日志中打印出类似这样的日志(例:Using fallback XXX for CID-keyed font STSong-Light),就说明系统没有安装STSong-Light字体,pdfbox使用XXX字体来替代了。如果出现方块,就说明没有这种字体,并且替代字体也没有,日志也有相应的其他提示。

 四、linux添加字体库

  可以选择STSong-Light字体,而我这里选择simsun.ttf字体。

#cd /usr/share/fonts/   // 进入系统自带的字体目录
#mkdir myfonts  // myfonts 是你自己随便取得文件夹名字,一定要有这一步
#将字体文件拷贝到这个文件夹下,在cd /usr/share/fonts/目录下执行以下命令
#mkfontscale   
#mkfontdir
#fc-cache -fv           //更新字体缓存
#fc-list    // 查看系统中所有得字体,可用于测试是否安装字体成功

如果
/usr/share/fonts/ 目录当前用户没有权限,可以在 ~/.fonts/ 目录下新增字体库,操作步骤和上面一样。
注意:一定要创建字体对应的文件夹,如果字体直接放在fonts目录,不会生效。

  新增字体之后,可以看到字体库列表中有如下 宋体 的字样了。

  技术图片

  最终转换后正常的PNG如下。

  技术图片

 

使用pdfBox实现pdf转图片,解决中文方块乱码等问题

标签:oms   artifact   back   mkdir   ima   mamicode   image   utils   buffer   

原文地址:https://www.cnblogs.com/hujunzheng/p/10508044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!