Linux word转pdf汉字乱码

本文介绍了解决Linux环境下word转PDF出现汉字乱码的问题。通过上传本地字体、生成字体索引文件、重启服务器及刷新缓存等步骤,成功解决了转换过程中的乱码现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 问题

本地开发的一个word转pdf的服务,部署在linux上以后出现乱码,汉字一个也看不到。如下:
在这里插入图片描述

二. 方案

程序在本地能运行,部署到服务器出现异常,那肯定是环境差异。
检查了一下,服务器上确实没有相关的字体包,那就装一个。

1. 创建文件夹

上传前,需要在/usr/share/fonts/建一个新的目录,名字叫winFonts(mkdir winFonts)。

2. 上传本地字体

将本地电脑 C:\Windows\Fonts 下的文件全部上传到刚才创建的文件夹。

3. 生成字体索引文件(执行两条命令)

sudo mkfontscale
sudo mkfontdir

执行第二条命令时可能会报错

Couldn't determine full name

检查一下有没有你需要的字体,没有的话可以忽略。

4. 重启服务器

reboot

5. 刷新缓存

sudo fc-cache -fv

三. 要点

原文章先刷新缓存再重启,我实践的结果恰恰相反,先重启后刷新缓存。
只能说多刷新没错。

四. 鸣谢

Linux下word转pdf中文乱码问题

### 如何确保Word文档换为PDF时字体正常显示 在将Word文档换为PDF的过程中,如果源文档中包含了非标准字体或者特殊字符集(如中文),可能会出现字体丢失或乱码的情况。以下是几种解决方案来确保字体能够正常显示。 #### 使用Spire.Doc处理非标准字体 通过使用`Spire.Doc for .NET`库可以有效解决这一问题。该工具不仅支持基本的WordPDF换,还特别针对非标准字体提供了额外的支持机制[^2]。具体来说,在调用`doc.SaveToFile()`方法之前,可以通过设置嵌入字体选项让这些自定义字体随同文档一起保存至目标PDF文件中。这样即使接收方未安装相应字体也能看到正确的渲染效果。 ```csharp using Spire.Doc; using System; class Program { static void Main(string[] args){ Document document = new Document(); document.LoadFromFile("input.docx"); // 嵌入选项开启以包含所有使用的字体数据 PdfSaveOptions options = new PdfSaveOptions(){ EmbedFullFont = true, FontSavingMode = PdfFontSavingMode.EmbedAllCharacters }; document.SaveToFile("output.pdf", FileFormat.PDF,options); } } ``` #### 利用R语言中的officedown包完成跨平台操作 对于偏好于统计分析环境下的用户而言,采用基于R语言的方式也是一种不错的选择。借助`rmarkdown::render`函数配合指定参数可实现高质量输出的同时兼顾美观度调整需求[^3]。值得注意的是这种方法依赖外部浏览器引擎来进行最终排版计算因此可能需要联网才能获得最佳体验。 ```r library(officedown) library(pagedown) # 定义输入输出路径变量 word_file_path <- "example.docx" pdf_output_path <- gsub("\\.docx$", ".pdf", word_file_path ) # 开始执行换过程 rmarkdown::render( input = word_file_path , output_file = pdf_output_path , output_format = "pagedown::chrome_print" ) ``` #### 解决Linux环境下Unoconv产生的汉字乱码现象 当运行在类Unix操作系统上时,由于缺乏必要的TrueType字型资源可能导致某些特定区域文字呈现异常状况发生。对此官方建议从Windows系统复制所需ttf/ttc类型的字体文件放置到服务器本地目录后再刷新全局缓存即可恢复正常工作流程[^4]。 1. 创建新存储位置用于存放导入的新字体; ```bash sudo mkdir /usr/share/fonts/winFonts/ ``` 2. 将所需的字体文件上传至此处; 3. 更新现有数据库以便识别新增加的内容: ```bash cd /usr/share/fonts/winFonts/ sudo mkfontscale && sudo mkfontdir sudo fc-cache -fv ``` 4. 最后重启机器使更改立即生效。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值