snappy && dompdf,可以单独使用。laravel-snappy && laravel-dompdf,为laravel开发的。

laravel框架建议不要低于5.5,吃过亏。

地址:laravel-snappylaravel-dompdfsnappydompdf

中文强烈建议使用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,查看是已安装

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐