pdfbox将pdf转换成图片时,提示STSong-Light字体缺失:No glyph for 20154 (CID 0ca6) in font STSong-Light

"本文讲述了如何解决PDFBox在将PDF转换为图片时遇到的中文显示问题,涉及到字体缺失和Windows系统中字体安装的细节。最终通过为所有用户安装字体、重启Tomcat并确保Java读取到正确路径解决了问题。"
摘要由CSDN通过智能技术生成

一、pdfbox把pdf转为图片的过程中出错

把pdf文件转为图片展示,但是展示出来的中文都是 口口 ,日志显示一堆No glyph for * (CID *) in font STSong-Light。
反正原因就是字体缺失造成的。
在这里插入图片描述
上述类中的63行打了一个日志表示找不到字体。大概就是这样的:

if (!font.hasGlyph(code)){
          int cid = font.getParent().codeToCID(code);
          String cidHex = String.format("%04x", cid);
          LOG.warn("No glyph for " + code + " (CID " + cidHex + ") in font " + fontName);
 }

提出字体的地址 中看到,AdobeSongStd-Light.otf,这个字体可以解决这个问题。
就到处找,终于找到了这个字体,安装上,当时发现还是没有解决。最后发现是操作的问题

二、windows安装字体

linux就不说了。我是win10
安装字体时,要选择“为所有用户安装”,这样安装后,安装文件就到了 C:\Windows\Fonts 目录中了,直接放到目录中也行。
如果仅仅是安装,会把字体放到用户目录下,我尝试直接安装会不生效(也就是jvm没读取到)。
在这里插入图片描述
最后是重启tomcat。重启tomcat后,重新进行把pdf转为图片就能把汉子成功解析出来了。这时如果你手动去删除 C:\Windows\Fonts\Adobe 宋体 Std 细体,会发现删不掉或者直接提示正在使用,说明java已经占用了该字体了。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值