pdfbox pdf转换图片时中文丢失,变成方框,提示No glyph for xxx in font STSong-Light

devtools/2024/10/20 11:33:04/

使用pdfbox转换图片时,转换出来的图片中文丢失,变成方框。原因是由于服务器字体缺失,pdfbox在转换时找不到合适的字体。

有几种方案:

  1. 服务器安装字体,具体资源百度
  2. 使用备用字体。
    将pdfbox中的FontMapperImpl类(见图一)复制出来,建立相同的目录,放在新建的目录中(相当于复写) (idea可以直接双击shift打开快捷搜索窗口,直接搜类名即可)

图一在这里插入图片描述

在94行一下以下新增一行

java">substitutes.put("STSong-Light", Arrays.asList("SimSun")); //主要看系统有什么字体

在这里插入图片描述

  1. 使用本地字体 – 由于本人系统跑在docker中,字体拷贝麻烦,采用了本地字体方式 – 跟(2)区别在于一个是使用系统的字体,需预装。(3)是使用项目目录或自定义目录下的字体包
    同(3),将pdfbox下的FileSystemFontProvider类拷贝出来,新建同名的目录,如图二。

图二在这里插入图片描述
搜索FileSystemFontProvider(FontCache cache)方法(我的是2.0.12)的包,位于193行,如图三。
定位files.add(new File(font));,恭喜你,找到pdfbox初始化字体库缓存的路口了,在下面追加一行files.add(new File("你本地字体文件目录"));即可,由于我这边字体是放在线上,所以多了一步url转file的过程。

图三在这里插入图片描述

提一句,有一行List<URI> fonts = fontFileFinder.find();代码,作用是遍历查找你系统字体库的方法


http://www.ppmy.cn/devtools/42455.html

相关文章

Nacos 进阶篇---Nacos服务端怎么维护不健康的微服务实例 ?(七)

一、引言 在 Nacos 后台管理服务列表中&#xff0c;我们可以看到微服务列表&#xff0c;其中有一栏叫“健康实例数” &#xff08;如下图&#xff09;&#xff0c;表示对应的客户端实例信息是否可用状态。 那Nacos服务端是怎么感知客户端的状态是否可用呢 &#xff1f; 本章…

Java通用三级菜单工具类

Java通用三级菜单工具类 通常在写三级菜单时会使用递归方式去写&#xff0c;但是时间长了会发现很多重复的代码一直在写&#xff0c;改&#xff0c;也就改几个名字。 实现方式 抽象属性结构 常用的三个字段&#xff0c;子级id、父级id、其次是数组children。 将返回对象或…

Linux 进程

文章目录 冯诺依曼体系 操作系统为什么要有操作系统系统调用和库函数概念进程的组成如何理解进程动态运行系统调用接口和用户操作接口 进程PCBPIDPCB和PIDgetpid()getppid()获取父进程pidfork() 创建进程父子进程为什么要创建子进程/proc 目录内查看进程文件夹chdir()改变进程的…

【文末附gpt升级方案】AIGC(人工智能):技术革命与人类未来的深度解析

AIGC&#xff08;人工智能&#xff09;&#xff1a;技术革命与人类未来的深度解析 摘要&#xff1a;随着科技的不断进步&#xff0c;人工智能&#xff08;AI&#xff09;已成为现代社会的重要支柱。其中&#xff0c;AIGC&#xff08;Artificial Intelligence Generated Conten…

STM32中SPI的使用

SPI&#xff08;Serial Peripheral Interface&#xff09;是一种高速、全双工、同步的通信协议&#xff0c;它广泛应用于微控制器与外设或其他微控制器之间的通信。SPI通过至少四条线路进行通信&#xff1a;一条串行时钟&#xff08;SCLK&#xff09;、一条主设备输出/从设备输…

C++—数组

数组是由一批相同类型的元素&#xff08;element&#xff09;的集合所组成的数据结构&#xff0c;分配一块连续的内存来存储。 语法&#xff1a; <数据类型> <数组名>[<数组长度>]; 数据类型&#xff1a;数组内存放的数据类型&#xff0c;如int、char&…

CR80清洁卡都能用在什么地方?

CR80清洁卡&#xff08;也被称为ISO 7810 ID-1清洁卡&#xff09;的规格确实使其在各种需要读取磁条或接触式智能卡的设备中都有广泛的用途。这些设备包括但不限于&#xff1a; ATM自动终端机&#xff1a;当ATM机的磁条读卡器出现故障或读卡不灵敏时&#xff0c;可以使用CR80清…

基于地理坐标的高阶几何编辑工具算法(4)——线分割面

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理 工具步骤 选中待分割面&#xff0c;点击“线分割面”工具&#xff0c;绘制和面至少两个交点的线&#xff0c;双击结束&#xff0c;执行分割操作 应用场景 快速切分大型几何面&#xff0c;以降低面的复杂度&…