Linux下Apose由Word转PDF后乱码问题解决

Linux下Apose由Word转PDF后乱码问题解决

文章目录

  • Linux下Apose由Word转PDF后乱码问题解决
  • [1. 问题描述](#1. 问题描述)
  • [2. 问题原因](#2. 问题原因)
  • [3. 解决方法](#3. 解决方法)
    • [1. 拷贝Windows中的字体库](#1. 拷贝Windows中的字体库)
    • [2. 在Linux中安装字体库](#2. 在Linux中安装字体库)
  • [4. 常见问题](#4. 常见问题)
      • [1. Ubuntu环境下使用如下命令安装:](#1. Ubuntu环境下使用如下命令安装:)
      • [2. Centos环境下使用如下命令安装](#2. Centos环境下使用如下命令安装)

1. 问题描述

在Ubuntu与Centos中使用aspose插件由word转换为PDF时中文显示乱码,但是在windows中转换后PDF有中文时显示正常

2. 问题原因

Ubuntu或Centos中缺少对应的中文字体库导致中文出现乱码

3. 解决方法

1. 拷贝Windows中的字体库

将Windows的字体库拷贝到Linux中,这里以win10字体库为例进行安装

  1. 将Windows10 系统中的 "C:\Windows\Fonts"中的Fonts目录拷贝(大约540MB)一份上传到Linux系统中
  2. 上传到Linux的目录如"/opt/winFonts"

2. 在Linux中安装字体库

  • 查看Linux中的所有字体
shell 复制代码
# 查看Linux中的所有字体库
fc-list
# 查看Linux中的中文字体库
fc-list :lang=zh
  • 拷贝与安装字体库
shell 复制代码
# 1. 在/usr/share/fonts新建 winFonts 目录
cd /usr/share/fonts
sudo mkdir winFonts
# 2. 拷贝从Windows上传的字体库到  /usr/share/fonts/winFonts
sudo cp /opt/winFonts/* /usr/share/fonts/winFonts
# 3.执行安装
cd /usr/share/fonts
# 然后执行以下命令更新字体缓存。
sudo mkfontscale
sudo mkfontdir 
sudo fc-cache -fv

在centos7中执行fc-cache -fv 看到下面内容说明字体安装成功

shell 复制代码
[root@localhost fonts]# fc-cache -fv
/usr/share/fonts: 正在生成缓存,新增缓存内容:0 个字体,7 个目录
/usr/share/fonts/default: 正在生成缓存,新增缓存内容:0 个字体,2 个目录
/usr/share/fonts/default/Type1: 正在生成缓存,新增缓存内容:35 个字体,0 个目录
/usr/share/fonts/default/ghostscript: 正在生成缓存,新增缓存内容:4 个字体,0 个目录
/usr/share/fonts/dejavu: 正在生成缓存,新增缓存内容:9 个字体,0 个目录
/usr/share/fonts/fontawesome: 正在生成缓存,新增缓存内容:2 个字体,0 个目录
/usr/share/fonts/liberation: 正在生成缓存,新增缓存内容:8 个字体,0 个目录
/usr/share/fonts/open-sans: 正在生成缓存,新增缓存内容:10 个字体,0 个目录
/usr/share/fonts/overpass: 正在生成缓存,新增缓存内容:8 个字体,0 个目录
/usr/share/fonts/winFonts: 正在生成缓存,新增缓存内容:1045 个字体,0 个目录
/usr/share/X11/fonts/Type1: 正在生成缓存,新增缓存内容:13 个字体,0 个目录
/usr/share/X11/fonts/TTF: 跳过,无此目录
/usr/local/share/fonts: 跳过,无此目录
/root/.local/share/fonts: 跳过,无此目录
/root/.fonts: 跳过,无此目录
/usr/share/fonts/default: 跳过,探测到循环目录
/usr/share/fonts/dejavu: 跳过,探测到循环目录
/usr/share/fonts/fontawesome: 跳过,探测到循环目录
/usr/share/fonts/liberation: 跳过,探测到循环目录
/usr/share/fonts/open-sans: 跳过,探测到循环目录
/usr/share/fonts/overpass: 跳过,探测到循环目录
/usr/share/fonts/winFonts: 跳过,探测到循环目录
/usr/share/fonts/default/Type1: 跳过,探测到循环目录
/usr/share/fonts/default/ghostscript: 跳过,探测到循环目录
/usr/lib/fontconfig/cache: cleaning cache directory
/root/.cache/fontconfig: not cleaning non-existent cache directory
/root/.fontconfig: not cleaning non-existent cache directory
/usr/bin/fc-cache-64: 缓存生成成功
[root@localhost fonts]# source /etc/profile
  • 执行下面命令让字体库生效
shell 复制代码
source /etc/profile
  • 如果安装失败,可以考虑修改字体权限
shell 复制代码
chmod 755 *.ttf
  • 注意:字体安装后必须重启Linux上的Tomcat或Spring boot或其他应用,否则还是不生效

4. 常见问题

执行 sudo mkfontscale 提示 mkfontscale: command not found

1. Ubuntu环境下使用如下命令安装:

shell 复制代码
# 使mkfontscale和mkfontdir命令正常运行
sudo apt-get install ttf-mscorefonts-installer
# 使fc-cache命令正常运行
sudo apt-get install fontconfig

在Ubuntu无法联网的情况下,安装rpm命令安装包:因为有依赖关系,顺序如下

shell 复制代码
1.libfontenc-1.1.3-3.amzn2.0.2.x86_64.rpm
2.libXfont-1.5.2-1.amzn2.0.2.x86_64.rpm
3.xorg-x11-font-utils-7.5-20.amzn2.0.2.x86_64.rpm
4.fontpackages-filesystem-1.44-8.amzn2.noarch.rpm
5.stix-fonts-1.1.0-5.amzn2.noarch.rpm
6.fontconfig-2.10.95-11.amzn2.0.2.x86_64.rpm

2. Centos环境下使用如下命令安装

shell 复制代码
# 使mkfontscale和mkfontdir命令正常运行
yum install mkfontscale 
# 使fc-cache命令正常运行。如果提示 fc-cache: command not found
yum install fontconfig
相关推荐
咕咚.萌西6 分钟前
RISC-V开发环境搭建
linux·硬件架构·risc-v
NiKo_W1 小时前
Linux 初识
linux·运维·服务器
磊灬泽5 小时前
【日常错误】鼠标无反应
linux·windows
CodeCraft Studio9 小时前
国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
python·html·word·markdown·国产化·spire.doc·文档格式转换
Miracle&10 小时前
2.TCP深度解析:握手、挥手、状态机、流量与拥塞控制
linux·网络·tcp/ip
专注API从业者10 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
Ribou10 小时前
Ubuntu 24.04.2安装k8s 1.33.4 配置cilium
linux·ubuntu·kubernetes
tan180°11 小时前
Boost搜索引擎 网络库与前端(4)
linux·网络·c++·搜索引擎
Mr. Cao code12 小时前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
一只花里胡哨的程序猿12 小时前
odoo打印pdf速度慢问题
pdf·odoo