WKHTMLTOPDF和WKHTMLTOIMAGE 使用方法

目录

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 中文乱码


1.安装

1.1 下载可执行文件

下载地址:wkhtmltopdf

一般使用composer安装扩展包时会包括Linux下的可执行文件, 一般在vendor/h4cc/wkhtmltopdf-amd64/bin目录中,需要Windows下可执行文件时可以从上面的地址下载,并修改配置文件里路径即可。

WKHTMLTOPDF和WKHTMLTOIMAGE 使用方法_第1张图片

1.2  Linux下全局配置可执行文件

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

1.3 安装composer包并发布

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,

2.使用

2.1 在snappy.php进行配置

'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'     => [],
    ],

2.2 使用代码示例

//使用模板进行渲染页面生成pdf文件并保存
$file = public_path('/upload/test.pdf');
$pdf = \PDF::loadView('pdf', compact('data'));           
$pdf->save($file, true);

//直接以字符串形式加载
$pdf = \PDF::loadHTML("");
$pdf->inline();

2.3 添加分页

.box{
    page-break-before: always;
    page-break-after: always;
    page-break-inside: avoid;
}

2.4 本地测试

 .\wkhtmltopdf --enable-local-file-access .\test.html 1.pdf

3.常见问题

3.1 js、css加载问题

需要配置hosts,比如你的网站为 www.test.cn,则在hotsts里配置 127.0.0.1 www.test.cn,并且js中声明变量应该使用var,不要使用let。

3.2 超时时间

snappy.php里timeout应该设置成具体的数字,虽然官网说明中设置为false是永不过期,实测发现并不生效,设为false还会有超时的情况。

3.3 中文乱码

从windows 找字体文件或下载字体simsun.ttc,Windows中一般在 C:\Windows\Fonts\simsun.ttc ,然后直接上传到服务器里的 /usr/share/fonts 里。

你可能感兴趣的:(PHP,php,HTML转PDF)