目录
1.安装
1.1 下载可执行文件
1.2 Linux下全局配置可执行文件
1.3 安装composer包并发布
2.使用
2.1 在snappy.php进行配置
2.2 使用代码示例
2.3 添加分页
2.4 本地测试
3.常见问题
3.1 js、css加载问题
3.2 超时时间
3.3 中文乱码
下载地址:wkhtmltopdf
一般使用composer安装扩展包时会包括Linux下的可执行文件, 一般在vendor/h4cc/wkhtmltopdf-amd64/bin目录中,需要Windows下可执行文件时可以从上面的地址下载,并修改配置文件里路径即可。
sudo cp vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64 /usr/local/bin/
sudo cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/
sudo chmod +x /usr/local/bin/wkhtmltoimage-amd64
sudo chmod +x /usr/local/bin/wkhtmltopdf-amd64
composer require barryvdh/laravel-snappy
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
在app.php里配置providers和facades
Barryvdh\Snappy\ServiceProvider::class,
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'pdf' => [
'enabled' => true,
'binary' => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf-amd64'),
'timeout' => 3600,
'options' => [],
'env' => [],
],
'image' => [
'enabled' => true,
'binary' => env('WKHTML_IMG_BINARY', '/usr/local/bin/wkhtmltoimage-amd64'),
'timeout' => false,
'options' => [],
'env' => [],
],
//使用模板进行渲染页面生成pdf文件并保存
$file = public_path('/upload/test.pdf');
$pdf = \PDF::loadView('pdf', compact('data'));
$pdf->save($file, true);
//直接以字符串形式加载
$pdf = \PDF::loadHTML("");
$pdf->inline();
.box{
page-break-before: always;
page-break-after: always;
page-break-inside: avoid;
}
.\wkhtmltopdf --enable-local-file-access .\test.html 1.pdf
需要配置hosts,比如你的网站为 www.test.cn,则在hotsts里配置 127.0.0.1 www.test.cn,并且js中声明变量应该使用var,不要使用let。
snappy.php里timeout应该设置成具体的数字,虽然官网说明中设置为false是永不过期,实测发现并不生效,设为false还会有超时的情况。
从windows 找字体文件或下载字体simsun.ttc,Windows中一般在 C:\Windows\Fonts\simsun.ttc ,然后直接上传到服务器里的 /usr/share/fonts 里。