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
相关推荐
Lu Zelin2 小时前
单片机为什么不能跑Linux
linux·单片机·嵌入式硬件
CS Beginner3 小时前
【Linux】 Ubuntu 开发环境极速搭建
linux·运维·ubuntu
ajassi20003 小时前
开源 C++ QT QML 开发(二)工程结构
linux·qt·qml
今天只学一颗糖4 小时前
Linux学习笔记--insmod 命令
linux·笔记·学习
摩羯座-185690305944 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
irisart5 小时前
4.1 > Linux 文件/目录权限管理【理论】
linux
---学无止境---5 小时前
Linux中poll的实现
linux
爱倒腾的老唐6 小时前
13、Linux 基本权限
linux·运维·服务器
罗政6 小时前
CentOS 7.6 系统源码部署 HivisionIDPhotos
linux·运维·centos
cililin7 小时前
第4章 文件管理
linux·服务器·网络·操作系统·unix