问题描述:
在开发PDF转JPG图片后,图片显示中文乱码,以下为具体示例:
pdf源文件:
转换成JPG后:
截图可以看到¥符号无法转换为乱码
关键代码报错截图:
代码已经提示我们STSong-Light字体中165符文不存在,而165正好对应着¥字符。(如果你们出现不存在某个字体的报错,接下来也可以跟我一样操作)
2024-04-28 00:13:31 WARN [org.apache.pdfbox.pdmodel.font.PDCIDFontType0] - Using fallback KaiTi for CID-keyed font STSong-Light
2024-04-28 00:13:31 WARN [org.apache.pdfbox.rendering.CIDType0Glyph2D] - No glyph for 165 (CID 5752) in font STSong-Light
2024-04-28 00:13:31 WARN [org.apache.pdfbox.pdmodel.font.PDTrueTypeFont] - Using fallback font 'LiberationSans' for 'CourierNewPSMT'
解决方案:
1.从网上下载最新的字体
因为我怀疑目前系统存在的字体是老的,所以我从网上下载最新的STSong-Light字体,下载地址:STSong-Light字体|STSong-Light Version 1.02字体-TTF字体/未分类字体-字客网;
2.在系统上安装字体,linux和window各有不同,我这里为linux字体安装:
## (可忽略)查看系统中的字体
fc-list
## (可忽略)查看系统中的中文字体
fc-list :lang=zh
## 进入系统自带的字体目录
cd /usr/share/fonts/
## 进入chinese,没有需要创建,改目录用于存放中文字体
cd chinese
## 将字体文件上传到该目录,我这里用的是rz命令,大家也可以用其它linux上传工具(例如WinSCP)也可以;
rz
## 调整当前chinese目录下字体读写权限
sudo chmod 755 ./*.TTF
## 更新字体缓存
fc-cache -fv
## 刷新系统配置文件
source /etc/profile