batrox/laravel-browsershot

Browsershot Laravel 封装,用于使用 Headless Chrome 生成 PDF 文件和屏幕截图

v1.0.0 2024-02-29 15:20 UTC

This package is auto-updated.

Last update: 2024-09-29 16:42:59 UTC


README

此包利用 Google Chrome 的 Headless 模式从网站、视图和原始 HTML 生成屏幕截图和 PDF

Build Status Coverage Status Latest Stable Version Latest Unstable Version Total Downloads License

要求

您可以通过 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 PDFScreenshot

使用方法

使用此包的推荐方法是使用其 Facades

PDF

从视图生成 PDF 并返回内联

  
  use VerumConsilium\Browsershot\Facades\PDF;
  
  ...
  
  return PDF::loadView('view.name', $data)
            ->inline();
  

您可以使用 browsershot master library 中所有可用的方法进行链式调用

将 PDF 作为下载返回

  use VerumConsilium\Browsershot\Facades\PDF;
  
  ...
  
  return PDF::loadView('view.name', $data)
            ->margins(20, 0, 0, 20)
            ->download();

您可以将自定义文件名和响应将包含的附加头信息传递给 inlinedownload 方法

  PDF::loadHtml('<h1>Awesome PDF</h1>') 
      ->download('myawesomepdf.pdf', [
        'Authorization' => 'token'
      ]);

将 PDF 持久化到磁盘

如果您想将生成的 PDF 文件保存到存储磁盘,可以调用 storestoreAs 方法

  $pdfStoredPath = PDF::loadUrl('https://google.com')
                      ->store('pdfs/')

这将使用默认的存储驱动程序将 PDF 存储在 pdfs/ 文件夹中,并给它一个唯一的名称。如果您想指定名称,可以调用 storeAs 方法

  $pdfStoredPath = PDF::loadUrl('https://google.com')
                      ->storeAs('pdfs/', 'google.pdf')

屏幕截图

屏幕截图的创建方式与 PDF 相同,只需将 Facade 更改为 Screenshot

将屏幕截图生成为 JPG/JPEG

默认情况下,屏幕截图将以 PNG 格式保存,如果您想使用 JPG,请调用 useJPG() 方法

use VerumConsilium\Browsershot\Facades\Screenshot;

Screenshot::loadView('view.name', $data)
           ->useJPG()
           ->margins(20, 0, 0, 20)
           ->download();