pdfbox将pdf文件转为图片时报错:No glyph for 20339 (CID 0844) in font STSong-Light

使用PDFBox在Java中将PDF转换为图片时遇到错误,提示缺少字体STSong-Light的字形。错误原因是环境中缺少字体。解决方法包括安装字体,特别是对于Windows需要选择为所有用户安装,并在必要时修改PDFBox的字体映射类。完成这些步骤并重启服务后,问题通常可以得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

java中使用pdfbox工具将pdf文件转为图片时报错:No glyph for 20339 (CID 0844) in font STSong-Light

导出的图片若有中文的位置,出现框框或者乱码

问题原因

pdfbox默认使用STSong-Light字体,且当前环境中没有该字体

解决办法
1.安装STSONG.TTF字体

windows与linux环境字体通用,只是安装方式略有不同,可以自行查询

win10安装字体时,要选择“为所有用户安装”,确保安装文件保存到 C:\Windows\Fonts 目录中

安装完毕之后,重启服务,如果仍然是显示字体缺失,继续往下

2.修映射类 org.apache.pdfbox.pdmodel.font.FontMapperImpl

在pdfbox的jar包中找到字体映射的类org.apache.pdfbox.pdmodel.font.FontMapperImpl

将全部内容拷贝,在自己的项目目录下,建立一个完全一样的包结构和类文件,并拷贝里面的内容

在这里插入图片描述
在FontMapperImpl()构造方法中,添加替代方案

this.substitutes.put("STSong-Light", Arrays.asList("STFangsong"));

在这里插入图片描述
这一步操作相当于重写了整个类,程序执行到这里时会优先执行我们重写的类

重启服务,检验效果,如果仍然不起作用,继续

3.安装字体AdobeSongStd-Light.otf

这也是我遇到的情况,有点坑人,缺这个字体早说嘛,也不给个提醒

安装以后重启服务,解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值