关于 DomPDF 导出中文乱码问题

框架使用的 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

本帖已被设为精华帖!
本帖由系统于 4年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 35

下面是我自己处理 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
7年前 评论
Summer

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

7年前 评论
Summer

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

7年前 评论

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

6年前 评论
playmaker 2年前

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

7年前 评论

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

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

4 1269005 2396 maatwebsite/excel Excel 处理工具,中文处理时会出现乱码,推荐使用 laravel-snappy,历史讨论请见 问答:关于 DomPDF 导出中文乱码问题
6年前 评论

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

6年前 评论

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

6年前 评论

@abcderffdsdee123

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

apt-get install fonts-wqy-microhei ttf-wqy-microhei fonts-wqy-zenhei ttf-wqy-zenhei

fc-cache -f -v
6年前 评论

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

7年前 评论

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

6年前 评论

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

6年前 评论

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

5年前 评论
monkey

今天刚好在做相关的需求,感谢各位前人的经验

5年前 评论
zhanghaidi

@Summer
laravel-dompdf 一直出现乱码,安装了很多字体包,都会出现一些字体不显示。
就换了laravel-snappy。按教程配置完成,出现页面这种情况。请问是什么问题呀?

file

用的

4年前 评论

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

7年前 评论

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

7年前 评论
Summer

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

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

7年前 评论

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

7年前 评论
playmaker 3年前

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

7年前 评论
7年前 评论
playmaker 3年前

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

7年前 评论

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

7年前 评论
MRWang

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论
Summer

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

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!