关于在linux-centos7下部署 .net core程序绘图(PDF等)丢失中文字体的解决方案
关于在linux-centos7下部署 .net core程序绘图(PDF等)丢失中文字体的解决方案
说明:
1:以下操作基于新系统, 如果步骤一,二已经安装则不需要额外安装. 需要注意的是,在使用(yum install 包)的时候 如果提示包不存在;需要运行 步骤 (一:5 安装epel,企业版Linux额外包)
2:以下()内代表可以执行的linux命令行;
一、配置网络yum源仓库;替换官方的yum仓库,解决软件下载速度慢的问题
1:进入到/etc/yum.repos.d/目录
(cd /etc/yum.repos.d/)
2:下载repo文件
2.1:用wget,输入命令 (wget http://mirrors.aliyun.com/repo/Centos-7.repo)。注意:如果wget命令不生效,说明还没有安装wget工具,输入 (yum -y install wget) 回车进行安装。
当前目录是/etc/yum.repos.d/,刚刚下载的Centos-7.repo也在这个目录上;也可以选择手动下载 地址:http://mirrors.aliyun.com/repo/; 选择centos-7.repo并下载到本地.然后将文件传到文件夹(/etc/yum.repos.d/)下;
3:备份系统原来的repo文件
3.1: (ls) 查看当前目录下的文件
3.2: (mv CentOS-Base.repo CentOs-Base.repo.bak) 备份; (如果找不到文件,就查看文件名是否正确,注意大小写)
3.3:(mv Centos-7.repo CentOs-Base.repo) 把刚刚下载的repo文件替换系统原来的repo文件
4:更新yum源
(yum clean all && yum makecache)
5:安装epel,企业版Linux额外包
(yum install -y epel-release)
6:参考链接:https://blog.csdn.net/lpl_lpl_lpl/article/details/85621740
二、安装.NET环境
1:检查 SDK 版本 (dotnet --list-sdks) 存在将获得类似于下面的输出 -- 3.1.100 [/home/user/dotnet/sdk]
2:检查运行时版本 (dotnet --list-runtimes) 存在将获得类似于下面的输出 -- Microsoft.NETCore.App 3.1.0 [/home/user/dotnet/shared/Microsoft.NETCore.App]
3:详细信息 (dotnet --info)查看 SDK 版本和运行时版本。 你还将获得其他环境相关信息,如操作系统版本和运行时标识符 (RID)。
4:安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
(sudo rpm -Uvh https://packages.microsoft.com/c ... -microsoft-prod.rpm)
5:安装 SDK
.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。运行以下命令: 安装完成以后可以再执行以上检查版本命令查看.
(sudo yum install dotnet-sdk-3.1) 安装过程中 y 表示同意安装 ,也可以在安装命令后指定-y参数全自动选择.(sudo yum install -y dotnet-sdk-3.1);
6:参考链接:https://docs.microsoft.com/zh-cn ... tos#install-the-sdk
三、安装字体
1:安装字体库配置工具
(yum -y install fontconfig)
2:查看是否有中文字体 / 所有字体
(fc-list :lang=zh) / (fc-list)
3:创建中文字体目录
(mkdir /usr/share/fonts/chinese)
4:添加中文字体
4.1:进入windows字体文件的位置:C:\Windows\Fonts,复制选择(宋体 常规)(因为PDF需要用到该字体);
4.2:上传字体文件到/usr/share/fonts/chinese文件夹中;上传到centos以后,文件名称叫 SIMSUN.TTC,
4.3:修改chinese目录的权限:
(chmod -R 755 /usr/share/fonts/chinese)
5:安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件
5.1: (yum -y install ttmkfdir)
5.2: (ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir)
6:最后一步就是修改字体配置文件了
6.1:通过xftp找到路径 /etc/fonts/;右键用记事本编辑 fonts.conf文件; (没有xftp就用vi编辑(vi /etc/fonts/fonts.conf) (i 编辑模式,Esc 退出编辑模式), (退出编辑模式之后(:wq)保存退出))
6.2:fonts.conf是一个xml文件,找到 <!-- Font directory list --> 下的节点,下面的节点指向了字体所在的文件夹的位置.
6.3:添加一个节点,把刚刚创建的字体文件路径 (<dir>/usr/share/fonts/chinese</dir>) 添加进去; 保存关闭
7:刷新字体缓存
(fc-cache);
执行第二步查看字体列表;
8:参考链接:https://blog.csdn.net/wlwlwlwl015/article/details/51482065
四、安装 libgdiplus; libgdiplus是一个开源的GDP+ API,用于绘制图形。
1:安装依赖
1.1:安装libgdiplus依赖
(yum install -y autoconf automake libtool)
(yum install -y freetype-devel fontconfig libXft-devel)
(yum install -y libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel)
(yum install -y glib2-devel cairo-devel)
(yum install -y pango-devel) //中文丢失的原因 就是这个依赖包没有安装;
1.2:安装libgdiplus
(yum install -y libgdiplus-devel) //libgdiplus-devel 会自动下载依赖 libgdiplus
2:参考链接:https://www.cnblogs.com/quan01994/p/9340355.html
https://centos.pkgs.org/7/epel-aarch64/libgdiplus-2.10-10.el7.aarch64.rpm.html;
https://github.com/mono/libgdiplus/tree/release/6.0#libgdiplus-an-open-source-implementation-of-the-gdi-api;
https://github.com/CoreCompat/System.Drawing/issues/8;
最后启动运行.net core 程序
dotnet ****.dll --urls="http://*:20999" &;