Windows和CentOS7安装wkhtmltopdf
Windows和CentOS7使用wkhtmltopdf
查找测试、总耗时一天时间。其中有许多问题现在看来都不是事
1.windows上使用wkhtmltopdf
在wkhtmltopdf.org/downloads.html 上下载win
版的安装程序,安装完毕后记录下这两个文件的本地地址
地址分别为:
D:\app\wkhtmltopdf\bin\wkhtmltopdf
D:\app\wkhtmltopdf\bin\wkhtmltoimage
将地址配置在.env文件中即可。
2.在CentOS 7上安装wkhtmltopdf
在CentOs上安装是最花费我时间的。
建议在官网上下载(rpm
格式)然后上传至服务器,(期间试过多种方式,这种是一次性成功的)然后执行:
rpm -Uvh wkhtmltox-0.12.6-1.centos8.x86_64.rpm
安装完成后,查找一下安装路径(一般为/usr/local/bin)
whereis wkhtmltopdf
然后执行命令:
sudo chmod +x /usr/local/bin/wkhtmltopdf
至此,安装完毕。(相关配置和常见问题在后面)
3.配合barryvdh/laravel-snappy使用
安装扩展barryvdh/laravel-snappy
composer require barryvdh/laravel-snappy
安装完成后发布配置文件
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
(附)可以在app.php文件中的providers添加
Barryvdh\Snappy\ServiceProvider::class,
在facades添加
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
在配置文件中:
在pdf->binary对应的地方写上执行文件的路径(记得加双引号,也可以在.env文件中配置,此时不需要加引号)
使用方式如下:
$html='...';//html代码
return SnappyImage::loadHtml($html)->stream('demo.jpg');
此时浏览器上会显示一张图片,内容为HTML所展示的内容。(转pdf也是一样)
问题一:服务器上中文乱码
在c:\windows\fonts中搜索宋体,不要搜索simsun不一定能搜出来,将字体文件上传至服务器/user/share/fonts文件中
问题二:在windows上执行时显示中文乱码
在SnappyImage::loadHtml($html)后面加上setOption(‘encoding’, ‘utf-8’);
问题三:部分人使用其他方式安装wkhtmltopdf时,在测试 wkhtmltopdf www.baidu.com test.pdf 时执行出错。
更新wkhtmltopdf文件,或者使用上述方法进行安装
问题四:图片宽度不对
执行 wkhtmltoimage -h 查看帮助文件,内容如下
查看扩展包文件中有方法如下:
所以可以这样写$html='...';//html代码 $options=[ 'crop-w'=>600, 'encoding'=>'utf-8' ]; return SnappyImage::loadHtml($html)->setOptions($options)->stream('demo.jpg');
(ps:crop-w是int类型,不要加单位px之类的,同时width也不需要加,这都是教训)
如果还有什么问题可以提出来,大家一起谈谈。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: