关于 DomPDF 导出中文乱码问题

问答 maxiaoxiong ⋅ 于 1年前 ⋅ 最后回复由 zhaiduting 3周前 ⋅ 13923 阅读

框架使用的 laravel5.2,包使用的是 maatwebsite/excel

maatwebsite/excel文档中说明要导出pdf需要下载依赖包 "dompdf/dompdf": " ~0.6.1",可以导出pdf但是中文是乱码,于是去看了DomPDF文档,发现了这段

file

当我运行第一种方法的时候结果如下:

file

压根没由class这个目录我也是懵逼的。我想可能是版本问题,但是maatwebsite/excel的文档中明确表明了用 0.6.1 没敢乱换,所以就尝试第二种,想去 google font上找个中文字体来的,找了半天也没找到。遂来求助了。提前感谢牛牛了。

忘记说了,开发环境是ubuntu,php版本是7.0.8

本文章首发在 Laravel China 社区
回复数量: 33
  • Summer MOD A Life-long learner.
    1年前

    dompdf 中文问题我之前也找过,没找到解决方案。

    建议使用:https://github.com/barryvdh/laravel-dompdf

  • Summer MOD A Life-long learner.
    1年前

    用的好用的话,记得回来写个教程 :smirk:

  • maxiaoxiong
    1年前

    @Summer 用这个也是出现乱码哈,由解决方案吗!

  • maxiaoxiong
    1年前

    问题解决了,晚上会奉上教程!:laughing:

  • Summer MOD A Life-long learner. 1
    1年前

    @maxiaoxiong 靠,怪我,早上贴错链接了,应该是这个项目 https://github.com/barryvdh/laravel-snappy

  • zhuzhichao Lalala Demacian ! 3
    1年前

    下面是我自己处理 ubuntu centos 输出 PDF 乱码整理的笔记,你可以试试,好的话给点赞

    wget https://dn-weiclicai.qbox.me/xpdf-chinese-simplified.tar.gz
    wget https://dn-weiclicai.qbox.me/font.zip
    tar zxvf xpdf-chinese-simplified.tar.gz
    unzip font.zip
    #中文支持安装:
    mkdir –p /usr/local/share/xpdf
    mv Gbsn00lp.ttf gkai00mp.ttf xpdf-chinese-simplified/CMap/
    mv xpdf-chinese-simplified /usr/local/share/xpdf/
    cd /usr/local/share/xpdf/xpdf-chinese-simplified
    #修改add-to-xpdfrc为如下内容
    #----- begin Chinese Simplified support package (2011-sep-02)
    cidToUnicode Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode
    unicodeMap ISO-2022-CN /usr/local/share/xpdf/chinese-simplified/ISO-2022-CN.unicodeMap
    unicodeMap EUC-CN /usr/local/share/xpdf/chinese-simplified/EUC-CN.unicodeMap
    unicodeMap GBK /usr/local/share/xpdf/chinese-simplified/GBK.unicodeMap
    cMapDir Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/CMap
    toUnicodeDir /usr/local/share/xpdf/chinese-simplified/CMap
    displayCIDFontTT Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/CMap/gkai00mp.ttf
    #fontFileCC Adobe-GB1 /usr/local/....
    #----- end Chinese Simplified support package
  • Summer MOD A Life-long learner. 1
    1年前

    laravel-snappy 底层使用的是 wkhtmltopdf,wkhtmltopdf 是构建于 QT Webkit 之上,而 QT Webkit 又是基于 Webkit 的,跟我们的浏览器一样的渲染引擎。

  • maxiaoxiong
    1年前

    @Summer 学习了,谢谢站长大人!
    @zhuzhichao 好详细的方案,会在教程中整理发出。感谢感谢!

  • zhuzhichao Lalala Demacian !
    1年前

    @Summer 说的对,经过实际生产环境使用 laravel-snappy 这个比 dompdf CPU占用率低很多,一定要用 laravel-snappy

  • MRWang
    1年前

    使用 laravel-snappy 的飘过。。。推荐

  • link1st
    1年前

    @maxiaoxiong 我也遇到了和你相同的问题,在使用barryvdh/laravel-dompdf导出pdf不显示中文,能否将你的解决方法和我分享一下? 万分感谢~

  • 怡霏爸爸
    1年前

    @Summer 你好,我用的laravel-snappy, 中文也是空白是怎么回事

  • No4
    1年前
  • yekexuan
    1年前

    mark

  • Jinrenjie
    1年前

    @Summer 请教一下用了snappy依然乱码是什么情况?

  • Ma
    1年前

    laravel-snappy要提前安装一个command line tool比较不方便吧,尤其是开发的时候是windows,部署时是linux的情况,还要分别在开发机和服务器上安装。
    请问用DomPDF最后是如何解决生成PDF中文会乱码的问题?@maxiaoxiong

  • maxiaoxiong
    1年前

    @Ma 我在服务器上安装了中文字体就可以了。

  • maxiaoxiong
    1年前

    @link1st 需要往服务器上安装中文字体哈,代码中也增加了对 @face的引用。具体哪个起作用没有具体测试。

  • syoukaihou
    1年前

    @maxiaoxiong 教程在哪里?评论中提到的【laravel-snappy】支持laravel5.2版本吗?

  • syoukaihou
    1年前

    我按照laravel-snappy文档在linux中部署了项目,结果生成的pdf全是黑色方框

  • syoukaihou
    1年前

    问题解决了,我使用的laravel-dompdf。
    已经沉淀成了博客

    http://www.cnblogs.com/xxoome/p/6083542.html

  • hiword
    1年前

    @maxiaoxiong ,你好,我现在也遇到导出PDF乱码问题了,使用的是laravel-snappy ,想请教你下,是怎么解决乱码问题的!谢了!

  • billyct
    1年前

    @hiword 你好,我在服务端导出pdf的时候,有遇到过中文乱码的问题,系统是ubuntu的,使用的snappy类库,后来我安装了中文字体解决的😊:http://cnedelcu.blogspot.com/2015/04/wkhtmltopdf-chinese-character-support.html

  • ricoo
    1年前

    还是建议用 laravel-snappy ,速度快多了,内存也小

  • EdwinHuiSH
    1年前

    我是看到Top 100 进来的,可是为什么EXCEL处理工具也推荐用PDF生成工具呢?注释写错了吧?理应是 laravel-dompdf 和 laravel-snappy 的讨论吧???

    4 1269005 2396 maatwebsite/excel Excel 处理工具,中文处理时会出现乱码,推荐使用 laravel-snappy,历史讨论请见 https://laravel-china.org/topics/2477
  • kingofswing
    11个月前

    @syoukaihou 您好!我参考了blog上的做法,中文显示没有问题,但是我以为下载过一次,第二次点其他的link生成PDF时会快一点,但是实际上每次生成PDF时,等很长时间,怎么办?有办法改进加载速度?请教了,谢谢!

  • 鲁初雪123
    10个月前

    @billyct 你好,我也遇到这个问题了,网址失效了,能再给一个吗

  • billyct
    10个月前

    @abcderffdsdee123

    那个链接没问题哦,你反正里面意思就说,比如ubuntu,按照类似👇这样,安装下中文字体,然后就可以了

    apt-get install fonts-wqy-microhei ttf-wqy-microhei fonts-wqy-zenhei ttf-wqy-zenhei
    
    fc-cache -f -v
  • 鲁初雪123
    10个月前

    @billyct :joy:還是無法解決中文亂碼的問題,我已經放棄了,改用tcpdf了,雖然麻煩一點,但是圖片能正常顯示,繁體也沒有出現亂碼

  • ZHBlue
    9个月前

    生成pdf,出现这个错误,Unable to write in directory: C:\WINDOWS 是怎么回事?

  • 猪爷爷
    9个月前

    安装完中文字体,怎么关联起来?
    大佬求助啊!!!

  • zhaiduting
    3周前

    laravel-snappy 在 window 7 里面的中文字体还是乱码啊!用了 @font-face 也无效……

暂无评论~~
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 100 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档