安装 wkhtmltopdf

基于docker php:8.1-fpm

apt-get update && apt-get install -y wkhtmltopdf
composer require h4cc/wkhtmltopdf-amd64 0.12.x
composer require h4cc/wkhtmltoimage-amd64 0.12.x

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

安装扩展包

composer require barryvdh/laravel-snappy

代码层面

php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"

# config/app.php中
## providers 数组
Barryvdh\Snappy\ServiceProvider::class

## aliases 数组
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,

# 根据实际情况修改 config/snappy.php 配置里面的 binary 项

使用

public function test200($params)
{
    $url = $params[1];

    $html = file_get_contents($url);
    $pdf  = \PDF::loadHTML($html);

    $file_name = storage_path('app/tmp/' . Str::random() . '.pdf');
    $pdf->save($file_name);

    dd($file_name);
}