zoukankan      html  css  js  c++  java
  • Linux下中文乱码

        引用:https://www.jianshu.com/p/bcede182647e

    一、原因分析

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

    1.查看系统预装字体

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

    cat /etc/issue # 查看Linux发行版本

    Centos
    Ubuntu
    fc-list # 查看已有字体
    fc-list :lang=zh # 查看中文字体

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

    2.安装字体

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

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

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

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

    我的是用Powershell上传的

    scp xxx/xxx/Fonts.zip root@192.168.1.122:/usr/share/fonts/

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

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

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

    fc-list :lang=zh

     到这里字体就安装完毕了,再试试生成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了。

     
  • 相关阅读:
    冒泡排序
    快速排序
    玩转git版本控制软件
    django内容总结
    ajax图片上传功能
    随机验证码
    制作博客系统
    django自带的用户认证和form表单功能
    COOKIE 与 SESSION
    Ajax知识
  • 原文地址:https://www.cnblogs.com/liuqq1015/p/15405341.html
Copyright © 2011-2022 走看看