• 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了。

     
  • 相关阅读:
    Crumpet – 使用很简单的响应式前端开发框架
    太赞了!超炫的页面切换动画效果【附源码下载】
    你见过动物是怎么笑的吗?赶紧来看看【组图】
    Treed – 基于拖放 操作的,强大的树形编辑器
    Perfect Scrollbar – 完美的 jQuery 滚动条插件
    Jeet – 先进,直观,灵活的 CSS 网格系统
    舌尖上的设计!10个美味的餐馆和食品网站
    推荐15款最好的 Twitter Bootstrap 开发工具
    Web 前端开发人员和设计师必读精华文章【系列二十五】
    Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景
  • 原文地址:https://www.cnblogs.com/liuqq1015/p/15405341.html
Copyright © 2020-2023  润新知