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

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

概述 一、引入依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version>2.0.13</version></dependency><dependency> <groupId>org.apache.pdfbox</groupI  一、引入依赖
<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转图片,解决中文方块乱码等问题全部内容,希望文章能够帮你解决使用pdfBox实现pdf转图片,解决中文方块乱码等问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1031583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存