解决Linux下生成PDF中文乱码的问题

您所在的位置:网站首页 取百位及以上数字 解决Linux下生成PDF中文乱码的问题

解决Linux下生成PDF中文乱码的问题

2023-01-02 14:29| 来源: 网络整理| 查看: 265

1.原因分析

这原因由于Linux是开源的,很多的字体没有被默认安装,在生成PDF的时候找不到对应字体找不到导致的。

1.查看系统预装字体 fc-list # 查看已有字体

如果找不到 fc-list的命令,就执行下面的安装命令

cat /etc/issue # 查看Linux发行版本 Centos yum install -y fontconfig mkfontscale Ubuntu apt-get -y install fontconfig xfonts-utils fc-list # 查看已有字体 fc-list :lang=zh # 查看中文字体

如果找到了中文字体,就需要查看PDF中的字体是否有被安装,没有被安装就需要安装相对应的字体。

2.安装字体

安装字体这玩意,可以只安装自己需要的字体,但是建议是将Win的所有字体全部安装好,这样一步到位,比较省心。

首先将Win的字体全部打包成Zip导入到需要被安装的Linux主机上。 Win字体存放路径 C:\Windows\Fonts

image.png

如果安装全部的字体就直接将这个文件夹Copy一份到其他的目录下然后直接将这个文件夹打包成压缩包。(这样比较靠谱)

image.png

然后将这个压缩包上传到服务器上的 /usr/share/fonts/目录下 我的是用Powershell上传的

scp xxx/xxx/Fonts.zip [email protected]:/usr/share/fonts/

然后上到Linux机器上 执行如下命令

cd /usr/share/fonts/ unzip ./Fonts.zip rm -rf ./Fonts.zip rm -rf ./*.fon #这种字体是安装不上的 mkfontscale mkfontdir fc-cache

这个压缩包中的字体不会被全部安装的,有几个是安装不上的,但是不影响基本使用 应该是只能安装ttf和ttc的字体,我猜的

image.png fc-list :lang=zh image.png

到这里字体就安装完毕了,再试试生成PDF应该就没有问题了。

3.运行在Docker中的程序如何解决这个问题

首先将源镜像下载下来 然后直接启动源镜像

docker run -it -d xxxx/dotnet/aspnet:3.1-buster-slim

然后将文件拷贝进去

cd .\Desktop\ docker cp .\Fonts.zip quizzical_darwin:/ # 这里要用容器名字 docker exec -it quizzical_darwin /bin/bash # 进入容器中

再执行ubuntu的那些操作(使用本文上面的字体安装步骤,安装成功后退出)

然后再将这个有字体的镜像做成源镜像

docker commit -a "hulailai" -m ".net core for pdf-service" 20269bb55607 dotnet-font-base

如果需要上传到服务器就直接大哥标签然后上传到服务器

docker tag dotnet-font-base xxxx docker push xxxx

搞定

再将这个源镜像作为你容器运行的 源镜像就OK了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3