关于在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" &;

 
posted @ 2023-04-26 10:31  刘小吉  阅读(273)  评论(0编辑  收藏  举报