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

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

有几种方案:

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

图一在这里插入图片描述

在94行一下以下新增一行

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.mzph.cn/bicheng/13553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 逆向学习【2】——APK基本结构

APK安装在安卓机器上的&#xff0c;相当于就是windows的exe文件 APK实际上是个压缩包 只要是压缩的东西 .jar也是压缩包 里面是.class(java编译后的一些东西) APK是Android Package的缩写,即Android安装包。而apk文件其实就是一个压缩包&#xff0c;我们可以将apk文件的后…

RabbitMQ安装及配套Laravel使用

MQ MQ 全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于系统之间的异步通信。 为什么需要mq: 解耦:MQ能够使各个系统或组件之间解耦,降低它们之间的耦合度,提高系统的灵活性和可维护性异步处理:通过MQ可以实现异步处理,提高系统响应速度和吞…

后量子密码解决方案

什么是后量子密码学 (PQC)&#xff0c;为什么准备工作如此重要? 量子计算正在迅速发展;用不了多久&#xff0c;量子网络攻击就会成为可能。量子网络攻击将能够在几分钟内瘫痪大型网络。我们今天赖以保护我们的连接和交易的一切都将受到量子计算机的威胁&#xff0c;危及所有密…

【C++】特殊类设计 | 单例设计模式

目录 前言一、设计一个类&#xff0c;不能被拷贝二、设计一个只能在堆上创建对象的类三、设计一个只能在栈上创建对象的类四、设计一个类&#xff0c;不能被继承五、设计一个类&#xff0c;只能创建一个对象(单例模式)5.1 饿汉模式5.2 懒汉模式5.3 饿汉模式VS懒汉模式 前言 本…

PostgreSQL学习:关于PostgreSQL以及认证

1、关于PostgreSQL PostgreSQL&#xff08;简称PG&#xff09;是强大的企业级开源关系数据库&#xff0c;世界排名第四&#xff0c;前三位Oracle 、SQLServer、MySQL都是商业数据库或受商业主体的控制&#xff0c;PG是学术社区开源数据库&#xff0c;开源协议自由度非常高&…

免费开源人脸识别系统,支持RESTful API

简介 CompreFace 是一个免费开源的人脸识别项目&#xff0c;您不需要具备机器学习技能就能安装设置和使用 CompreFace&#xff0c;官方提供了基于 docker 的部署方法&#xff0c;可以方便地部署在本地或者云端服务器上。 CompreFace 提供了 RESTful API&#xff0c;用于人脸识别…

Springboot 多环境切换 方法

准备工作 假设系统中有以下几个yml文件&#xff1a; application.ymlapplication-dev.ymlapplication-prode.ymlapplication-test.yml 方法一&#xff1a;在Active Profiles:输入dev 启动效果&#xff1a; 方法二&#xff1a;在Environment variables: 输入spring.profile…

Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

实现计时器

一、计时器 Java的标准库中,为我们提供了 计时器 的实现,让我们先来试着使用它. public static void main(String[] args) throws InterruptedException{Timer timer new Timer();timer.schedule(new TimerTask() {Overridepublic void run() {System.out.println("hell…

GPT‑4o普通账户也可以免费用

网址 https://chatgpt.com/ 试了一下&#xff0c;免费的确实显示GPT‑4o的模型&#xff0c;问了一下可以联网&#xff0c;不知道能不能通过插件出图 有兴趣的可以试试

【诚邀加入】obdiag SIG:共筑OceanBase敏捷诊断,让问题排查变得更快更容易!

亲爱的OceanBase用户、技术爱好者及专业人士&#xff1a; 我们怀着无比激动的心情&#xff0c;正式向您发出加入obdiag SIG&#xff08;OceanBase敏捷诊断工具特别兴趣小组&#xff09;的诚挚邀请&#xff01;obdiag SIG 是一个专注于 OceanBase 敏捷诊断工具研发、推广及生态…

python 庆余年2收视率数据分析与可视化

为了对《庆余年2》的收视率进行数据分析与可视化&#xff0c;我们首先需要假设有一组收视率数据。由于实际数据可能无法直接获取&#xff0c;这里我们将使用模拟数据来演示整个过程。 以下是一个简单的步骤&#xff0c;展示如何使用Python&#xff08;特别是pandas和matplotli…

Acrobat Pro DC 2024 Mac软件安装包下载PDF2024 Mac安装教程

安装 步骤 1&#xff0c;双击打开下载好的安装包。 2&#xff0c;选择acrobat dc installer.pkg双击启动安装程序。 3&#xff0c;点击继续。 4&#xff0c;点击继续。 5&#xff0c;点击继续。 6&#xff0c;点击安装。 7&#xff0c;输入电脑密码。 8&#xff0c;软件安装中…

“手撕”String类+练习题

一、什么是String类 简单讲&#xff1a;是一个类&#xff01;创建字符串和字符串方法的类。 用 圈起来的叫字符&#xff0c;比如&#xff1a;a,b....里面只能有一个char类型的字符。 用" "圈起来的叫字符串&#xff0c;比如&#xff1a;"abc"..里面可以连…

【java】websocket对接微软语音实时识别

目录 1. pom依赖2. websocket接口3. 自定义输入流4. 自定义控制5. 自定义语音流6. 说明 1. pom依赖 <dependency><groupId>com.microsoft.cognitiveservices.speech</groupId><artifactId>client-sdk</artifactId><version>1.37.0</ve…

C# Stack用法

C#中的Stack&#xff08;堆栈&#xff09;是一种后进先出&#xff08;LIFO, Last In First Out&#xff09;的数据结构&#xff0c;用于在顶部添加和移除元素。Stack类位于System.Collections.Generic命名空间中&#xff0c;它允许存储特定类型的对象。以下是一些基本的Stack用…

如何搭建Sphinx文档

环境准备 Linux CentOS 7 方案 搭建一个文档网站&#xff0c;本文档使用的是tomcatsphinx。 Tomcat可以快速搭建出http服务&#xff0c;也可以使用apache httpd。 Sphinx作为文档网页自动生成工具&#xff0c;可以从reStructured文档转换为html文件。 Tomcat安装 创建/…

华为设备WLAN配置之AP上线

WLAN基础配置之AP上线 配置WLAN无线网络的第一阶段&#xff0c;AP上线技术&#xff1a; 实验目标&#xff1a;使得AP能够获得来自AC的DHCP地址服务的地址&#xff0c;且是该网段地址池中的IP。 实验步骤&#xff1a; 1.把AC当作三层交换机配置虚拟网关 sys Enter system view,…

PaddlePaddle----基于paddlehub的文字识别

识别的代码 要使用 PaddleHub 进行 OCR 文本识别&#xff0c;您可以使用 PaddleHub 提供的预训练模型 chinese_ocr_db_crnn_mobile。以下是一个示例 Python 代码&#xff0c;演示如何使用 PaddleHub 进行 OCR 文本识别&#xff1a; import paddlehub as hub import cv2# 加载预…

note-网络是怎样连接的1 浏览器内部

助记提要 常见浏览器使用的协议 4种HTTP方法 8种响应状态码类型 5种5种IP地址的含义域名查找的基本原理协议栈发送消息的4个阶段 第1章 浏览器生成消息 探索浏览器内部 1 浏览器输入的URL 常见协议 http(访问Web服务器)&#xff0c;ftp(从ftp服务器下载和上传)&#xff0c;f…