使用laravel-snappy生成pdf
laravel-snappy基于wkhtmltopdf工具,可以比较完美的将web页面转成pdf格式。
安装过程
顺便把laravel及laravel-snappy安装过程记录下
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer create-project laravel/laravel example-app
composer require barryvdh/laravel-snappy
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
config/app.php 'aliases'项加上
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
使用
$pdf = PDF::loadView('pdf.invoice', $data);
$pdf->setPaper('a4')->setOption('encoding', 'utf-8')->setOption('margin-left', 0)->setOption('margin-right', 0)
->setOption('javascript-delay', 10000)->setOption('no-stop-slow-scripts', true);
$pdf->save($path)
//return $pdf->download('invoice.pdf');
用于调整生成pdf格式的css属性
.keep-together {
page-break-inside: avoid;
}
.break-before {
page-break-before: always;
}
.break-after {
page-break-after: always;
}
使用laravel的command定时生成pdf
php artisan make:command pdf
查看代码
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Services\PdfService;
class Pdf extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'pdf {name}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'pdf';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$name = $this->argument('name');
$service = new PdfService();
$service->pdf($name);
$this->info('The command was successful!');
}
}
调试
// 方法1
use Illuminate\Support\Facades\Artisan;
Route::post('/pdf/{name}', function ($name) {
$exitCode = Artisan::call('pdf', [
'name' => $name
]);
});
或者php artisan pdf 'aa'
重要提示
wkhtmltopdf 工具生成 pdf 的底层是使用 QT 浏览器,不支持 es6 等比较新的语法及新增的函数方法,使用这些语法会导致解析错误,不能生成 pdf。
也不支持 css3 样式属性。
分类:
laravel
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix