verumconsilium / laravel-browsershot
使用无头Chrome生成PDF文件和屏幕截图的Laravel包装器
v1.3.0
2020-10-15 19:04 UTC
Requires
- spatie/browsershot: ^3.19
Requires (Dev)
- orchestra/testbench: ^3.6
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-08-30 01:23:16 UTC
README
此软件包利用Google Chrome的无头模式从网站、视图和原始HTML生成屏幕截图和PDF文件
要求
- 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 verumconsilium/laravel-browsershot
安装包后,服务提供者将被自动发现,并将有两个新的Facades PDF
和 Screenshot
可用
用法
推荐使用此包的方式是通过其Facades
从视图生成PDF并在行内返回
use VerumConsilium\Browsershot\Facades\PDF; ... return PDF::loadView('view.name', $data) ->inline();
您可以链接browsershot主库中所有可用的方法
以下载的形式返回PDF
use VerumConsilium\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
方法
$pdfStoredPath = PDF::loadUrl('https://google.com') ->store('pdfs/')
这将使用默认的存储驱动程序将PDF存储在pdfs/
文件夹中,并给它一个唯一的名称。如果您想指定名称,可以调用storeAs
方法
$pdfStoredPath = PDF::loadUrl('https://google.com') ->storeAs('pdfs/', 'google.pdf')
屏幕截图
屏幕截图的创建方式与PDF相同,只需将外观改为Screenshot
生成JPG/JPEG格式的屏幕截图
默认情况下,屏幕截图将以PNG格式生成,如果您想使用JPG格式,请调用useJPG()
方法
use VerumConsilium\Browsershot\Facades\Screenshot; Screenshot::loadView('view.name', $data) ->useJPG() ->margins(20, 0, 0, 20) ->download();