cavaon-wayne / laravel-browsershot
Browsershot 的 Laravel 封装,用于使用无头 Chrome 生成 PDF 文件和屏幕截图
v2.0.0
2020-10-28 06:37 UTC
Requires
- illuminate/support: 6.*
- spatie/browsershot: 3.40.0
This package is not auto-updated.
Last update: 2024-09-26 00:56:02 UTC
README
此包利用 Google Chrome 的无头模式,从网站、视图和原始 HTML 中抓取屏幕截图并生成 PDF 文件
从 verumconsilium/laravel-browsershot 分支
要求
- Node 7.6.0 或更高版本
- Google Chrome
- Puppeteer Node 库.
您可以通过 NPM 在您的项目中安装 Puppeteer
npm install puppeteer
或者您可以选择全局安装它
npm install puppeteer --global
在由 Forge 提供的 Ubuntu 16.04 服务器上,您可以按照以下方式安装最新稳定版本的 Chrome
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
sudo npm install --global --unsafe-perm puppeteer
sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium
安装
通过 composer 安装此包
composer require cavaon-wayne/laravel-browsershot
包安装后,服务提供者将被自动发现,并且将提供两个新的 Facades PDF
和 Screenshot
如果自动发现不起作用,请将以下服务提供者添加到 config/app.php
Cavaon\Browsershot\BrowsershotServiceProvider::class,
用法
使用此包的推荐方式是通过其 Facades
从视图生成 PDF 并返回内联
use Cavaon\Browsershot\Facades\PDF; ... return PDF::loadView('view.name', $data) ->inline();
您可以通过 browsershot master library 中的所有可用方法进行链式调用
将 PDF 作为下载返回
use Cavaon\Browsershot\Facades\PDF; ... return PDF::loadView('view.name', $data) ->margins(20, 0, 0, 20) ->download();
您可以将自定义文件名和响应将具有的附加标题传递给 inline
和 download
方法,如下所示
PDF::loadHtml('<h1>Awesome PDF</h1>') ->download('myawesomepdf.pdf', [ 'Authorization' => 'token' ]);
将 PDF 持久化到磁盘
如果您想将生成的 PDF 文件保存到存储磁盘,可以调用 store
或 storeAs
方法
$result = PDF::loadUrl('https://google.com') ->store('abcd.pdf')
屏幕截图
屏幕截图的创建方式与 PDF 相同,只需将 facade 更改为 Screenshot
生成 JPG/JPEG 格式的屏幕截图
默认情况下,屏幕截图将以 PNG 格式抓取,如果您想使用 JPG,请调用 useJPG()
方法
use Cavaon\Browsershot\Facades\Screenshot; Screenshot::loadView('view.name', $data) ->useJPG() ->margins(20, 0, 0, 20) ->download();