在linux环境下使用icepdf或pdfbox将pdf转化成图片是出现乱码,网上查发下是itextpdf生成pdf引用"STSong-Light"字体而linux环境下没有这个字体造成的。

所有要从根源解决问题,就是在生成pdf的时候就给它指定系统存在的字体,这样pdf转化成图片就没问题了。

pdfbox生成pdf时候默认用的字体为"STSong-Light",但是STSong-Light字体在全网搜索有点坑,都没找到,如果pdf不转换成图片的时候则没问题,如果业务需要,将pdf转化成图片时候,在Windows环境下没问题,放到linux就乱码,通过网上的资料发现,可以引用系统的字体。这样生成的图片就没问题,下面介绍下引用系统的字体的方法(前提是系统存在这些字体,linux下装字体请自行百度,这里不再累述)

修改itextpdf字体代码如下:

public Font chineseFont(int size) throws Exception {
// 设置中文
//BaseFont b = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); //默认的字体调用
//获取系统字体的路径
String prefixFont = "";
String os = System.getProperties().getProperty("os.name");//获取系统类型
if (os.startsWith("win") || os.startsWith("Win")) {//win下获取字体的路径
prefixFont = "C:\\Windows\\Fonts" + File.separator + "STSONG.TTF";
} else {
prefixFont = "/usr/share/fonts" + File.separator + "STSONG.TTF"; {//linux下获取字体的路径,注意该目录下如果没有需额外安装,如我用的是STSONG字体
}
logger.info("获取到的系统的字体路径为:"+prefixFont);
BaseFont b = null;
try {
b = BaseFont.createFont(prefixFont, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
logger.info("使用系统的宋体字体生成pdf!");
} catch (Exception e) {
//如果发生异常执行默认的字体
b = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
logger.info("没有获取系统的STSONG字体,使用pdf默认体字生成pdf!");
} return new Font(b, size, Font.NORMAL, BaseColor.BLACK);
}

在linux环境下使用icepdf或pdfbox将pdf转化成图片是乱码解决的更多相关文章

  1. Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

    问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Quer ...

  2. Linux环境下安装XAMPP的PHP的PDF扩展

    安装pdf扩展1. wget http://pecl.php.net/get/pdflib-4.1.2.tgz2. tar zxvf pdflib-4.1.2.tgz3. cd pdflib-4.1. ...

  3. linux 环境下运行STS时 出现must be available in order to run STS

    linux 环境下运行ECLIPSE时 出现 “ A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avai ...

  4. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  5. linux环境下学习使用pro*c/c++工具

    1.proc是oracle用来预编译嵌入SQL语句的c程序. 2.如何使用proc工具 在Linux环境下,首先确保gcc编译器正常使用,安装oracle数据库或者客户端,一般就会默认安装pro*c/ ...

  6. Linux环境下段错误的产生原因及调试方法小结(转)

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...

  7. java 在linux环境下写入 syslog 问题研究

    1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...

  8. 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解

    一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...

  9. Linux环境下安装Tigase XMPP Server

    Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...

随机推荐

  1. Signalr Vue Echarts绘制实时CPU使用率

    后端基于Asp.net webapi,前端Vue,前后端分离,该demo仅做演示,实现的细节可以自己优化 Echarts:4.2.1  可参考 官网 Jquery:3.4.1 Signalr:2.4. ...

  2. C++遍历文件夹

    struct _finddata_t { unsigned attrib; //文件属性 time_t time_create; //文件创建时间 time_t time_access; //文件上一 ...

  3. 前端 vue/react 或者 js 导入/导出 xlsx/xls (带样式)表格的功能

    第一种导出表格的功能: yarn add xlsx script-loader file-saver xlsx-style 效果展示 xlsx-style的bug修复:node_module/xlsx ...

  4. Vue中断axios请求-切换页面+重复请求

    切换页面时中断 一.概述 在Vue单页面开发过程中,遇到这样的情况,当我切换页面时,由于上一页面请求执行时间长,切换到该页面时,还未执行完,这时那个请求仍会继续执行直到请求结束,此时将会影响页面性能, ...

  5. angularJs同步请求

    今天在写几级联动的时候,因为比如上一个接口请求数据成功返回后,才能根据上一个接口返回的数据请求下一个接口,以此类推:因此有了同步请求的想法. 在前端做同步读取显然不是好的实践做法,同步之后会严重影响前 ...

  6. SQLite3学习笔记(3)

    SQLite 表达式 表达式是一个或多个值.运算符和计算值的 SQL函数的组合. SQL表达式与公式类似,都写在查询语言中.您还可以使用特定的数据集来查询数据库. SELECT语句的基本语法如下: S ...

  7. jenkins 配置主从机制(master-slaver)

    1. 中文:系统管理——节点管理——新建节点(左上侧) 英文:Manage Jenkins——Manage Node——新建节点(左上侧) 2. 中文配图 英文配图: 3. 远程工作目录 以mac为例 ...

  8. WebRTC基于GCC的拥塞控制算法[转载]

    实时流媒体应用的最大特点是实时性,而延迟是实时性的最大敌人.从媒体收发端来讲,媒体数据的处理速度是造成延迟的重要原因:而从传输角度来讲,网络拥塞则是造成延迟的最主要原因.网络拥塞可能造成数据包丢失,也 ...

  9. JVM命令jinfo

          jinfo也是jvm中参与的一个命令,可以查看运行中jvm的全部参数,还可以设置部分参数.   格式      jinfo [ option ] pid      jinfo [ opti ...

  10. FFmpeg常用命令学习笔记(四)处理原始数据命令

    处理原始数据命令  通过音视频设备采集的.没有经过任何加工的数据叫原始数据,而像我们平时播放的比如mp4文件是压缩后的数据.视频原始数据是YUV格式,音频原始数据是PCM格式.FFmpeg可以从封装格 ...