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
相关推荐
BD_Marathon19 分钟前
【Zookeeper】CAP理论——CAP介绍
linux·分布式·zookeeper
赖small强1 小时前
【Linux 网络基础】HTTPS 技术文档
linux·网络·https·tls
写代码的学渣1 小时前
ubuntu 22.04 新装的系统 xshell 连不上
linux·运维·ubuntu
序属秋秋秋2 小时前
《Linux系统编程之进程环境》【环境变量】
linux·运维·服务器·c语言·c++·操作系统·系统编程
云计算练习生3 小时前
linux shell编程实战 10 Git工具详解与运维场景实战
linux·运维·git
虚伪的空想家5 小时前
KVM的ubuntu虚机如何关闭安全启动
linux·安全·ubuntu
t1987512810 小时前
在Ubuntu 22.04系统上安装libimobiledevice
linux·运维·ubuntu
skywalk816310 小时前
linux安装Code Server 以便Comate IDE和CodeBuddy等都可以远程连上来
linux·运维·服务器·vscode·comate
晚风吹人醒.11 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
Hard but lovely12 小时前
linux: pthread库的使用和理解
linux