使用pdfBox实现pdf转图片,解决中文方块乱码等问题
发布时间:2020-12-14 02:03:54 所属栏目:Linux 来源:网络整理
导读:?一、引入依赖 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 / dep
?一、引入依赖<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 // 查看系统中所有得字体,可用于测试是否安装字体成功 新增字体之后,可以看到字体库列表中有如下 宋体 的字样了。
最终转换后正常的PNG如下。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |