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 协议》,转载必须注明作者和本文链接
推荐文章: