参考文章:
PDF 扩展包使用
使用Laravel-snappy导出PDF
wkhtmltopdf/laravel-snappy 不呈现页眉和页脚
使用 Laravel snappy 生成 PDF 并集成到 Laravel-admin
使用
32位: | |
$ composer require h4cc / wkhtmltopdf-i386 0.12.x | |
$ composer require h4cc / wkhtmltoimage-i386 0.12.x, | |
64位: | |
$ composer require h4cc/wkhtmltopdf-amd64 0.12.x | |
$ composer require h4cc/wkhtmltoimage-amd64 0.12.x | |
(uname -a 命令查看系统位数) | |
cp vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64 /usr/local/bin/ | |
cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/ | |
并使其可执行: | |
chmod +x /usr/local/bin/wkhtmltoimage-amd64 | |
chmod +x /usr/local/bin/wkhtmltopdf-amd64 |
- 安装 snappy 包
composer require barryvdh/laravel-snappy
- 配置
- 将 ServiceProvider 添加到 config /app.php 中的 providers 数组中
Barryvdh\Snappy\ServiceProvider::class, | |
或添加到 Facade 中 | |
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, | |
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class, |
- 生成配置文件
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
- 注意点
cd /usr/local/bin/ | |
ls |
- 使用
下载 | |
$pdf = \PDF::loadView('welcome', $data); | |
return $pdf->download('welcome.pdf'); | |
渲染页面 | |
$html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>'; | |
$pdf = \PDF::loadHTML($html); | |
return $pdf->inline(); | |
通过外部链接生成 | |
return PDF::loadFile('http://www.github.com')->inline('github.pdf'); | |
- Image | |
```php | |
一: | |
下载 | |
$img = \SnappyImage::loadView('welcome', $data); | |
return $img->download('welcome.png'); | |
二: | |
渲染页面 | |
$html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>'; | |
$img = \SnappyImage::loadHTML($html); | |
return $img->inline(); |
- 通过外部链接生成
- 页眉、页脚、页码
#header | |
<html lang="en"> | |
<head> | |
</head> | |
<body> | |
<div style="background: blanchedAlmond;color:green;">My Header is amazing<div> | |
</body> | |
</html> | |
#footer | |
<html lang="en"> | |
<head> | |
</head> | |
<body> | |
<div style="background: blanchedalmond; color:green;">Copyright © 2020</div> | |
</body> | |
</html> | |
$data = [ | |
'name' => '测试pdf' | |
]; | |
$header = \view('header')->render(); | |
$footer = \view('footer')->render(); | |
$pdf = \PDF::loadView('pdf', $data) | |
->setOption('margin-top', '20mm') | |
->setOption('margin-bottom', '20mm') | |
->setOption('minimum-font-size', 25) | |
->setOption('header-html', $header) | |
->setOption('footer-html', $footer) | |
->setOption('footer-right', '页面 [page]') | |
->setOption('footer-font-size', 8) | |
->setOption('footer-spacing', 5); | |
return $pdf->download('pdf.pdf'); |
- 中文乱码解决
cd /usr/share/fonts | |
ls |
- alt="Laravel-snappy导出PDF" />
- PDF 分页问题
- 使用 css 的
page-break-after:always
或page-break-inside:aovid
有没有其他坑补充的~~