snappy && dompdf,可以单独使用。laravel-snappy && laravel-dompdf,为laravel开发的。
laravel框架建议不要低于5.5,吃过亏。
地址:laravel-snappy,laravel-dompdf,snappy,dompdf
中文强烈建议使用laravel-snappy,不然够你折腾的。具体配置参照github链接地址说明,记录中文乱码解决办法。
1、引入包需要安装composer
2、安装文字插件
解决中文乱码字体
【解决方案】
sudo apt-get install openssl build-essential xorg libssl-dev
apt-get install fonts-wqy-microhei ttf-wqy-microhei fonts-wqy-zenhei ttf-wqy-zenhei
fc-cache -f -v
sudo apt-get install libssl1.0-dev 【如果前三条命令可以实现不乱码就不用执行此命令,其实第一条命令已经安装了libssl-dev,只是担心版本不对】
apt install libXrender
apt install libXext 【这个是laravel-snappy需要的库】
【字体库安装参考:添加字体库】
很多网友说,要手动将下载的字体库上传到 /var/share/fonts下或者下面的某一目录(可以自己创建),也许是我上述命令安装了字体库自动生成了包吧,就不用引入了。
3、报错解决
参考:Link
报错
“QSslSocket: cannot resolve CRYPTO_num_locks ] 10% QSslSocket: cannot resolve CRYPTO_set_id_callback QSslSocket: cannot resolve CRYPTO_set_locking_callback QSslSocket: cannot resolve sk_free 。。。。。
wkhtmltopdf --version 或 wkhtmltopdf-amd64 --version【查看版本】
解决一:sudo apt-get install libssl1.0-dev (ubuntu18.04有用)
解决二:
Downgrade libssl
apt install libssl-dev=1.0.2g-1ubuntu4.8
【14.04 = apt install libssl-dev=1.0.1f-1ubuntu2.25 (Tested and worked)
18.04 = apt install libssl-dev=1.0.2n-1ubuntu5 (Not tested)】
Lock it from future upgrades
apt-mark hold libssl-dev
4、使用【举例:保存pdf文件到本地】
//将处理好的数据渲染到html页面并转成html格式
$html = view('html',[
'data' => $data
]);
file_put_contents(storage_path('zip/test.html'),$html);
//将处理好的数据渲染到html页面并转成pdf格式
$pdf = PDF::loadView('pdf', [
'data' => $data
]);
$pdf->save('test.pdf');
5、力证用laravel-snappy的原因【一个是作者本人一个是laravel头头,哈哈】
自己的总结:
简单的不带中文的用laravel-dompdf,复杂的结构等用laravel-snappy
网友的总结:
参考:Link
中文乱码说明:
1、保证网页编码为UTF-8,GBK、GB2312网上说好像支持不太好,我未测试;
2、如果导出是乱码,注意不是方框方框,则是网页编码问题;
3、如果导出是方框方框,表示服务器未安装中文字体,安装字体即可,安装下面说明;
安装中文字体:
0、查看目前安装字体:fc-list
1、下载所需字体,例如msyh.ttf
2、mkdir /usr/share/fonts/zh_CN
3、mv msyh.ttf /usr/share/fonts/zh_CN
4、执行fc-cache -fv
5、查看是否安装成功:fc-list,查看是已安装