Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF

言鼎科技 2023-05-20 469

生成 PDF 是許多 Web 應(yīng)用程序最常見的事情之一,原因是它使用戶能夠輕松下載和共享可以輕松查看和打印的文檔。Laravel 是 Web 應(yīng)用程序開發(fā)市場中著名的 PHP 框架,它還提供了許多工具和庫,可讓您構(gòu)建 Web 應(yīng)用程序,包括用于生成 PDF 的工具。因此,在這篇博文中,我們介紹了一個著名的軟件包,即 Browsershot Laravel,它可以使用 Headless Chrome 和 Laravel 生成 PDF,它使您能夠在不受傳統(tǒng) PDF 生成工具限制的情況下生成 PDF。

介紹

當(dāng)前市場上提供了眾多 PDF 生成工具,但傳統(tǒng)選項通常存在局限性,例如額外的軟件依賴性或缺乏定制。Browsershot Laravel 是 Laravel 的一個包,它通過使用 Headless Chrome 啟用 PDF 生成來解決這些問題,提供了一種在創(chuàng)建 PDF 時管理 CSS 的解決方案,而其他包(如DomPDFSnappy )可能無法實現(xiàn)。

Laravel 是一種流行的用于構(gòu)建 Web 應(yīng)用程序的 PHP 框架,以其豐富的功能而聞名。但是,某些用于生成 PDF 文件的包可能難以處理某些 CSS3 規(guī)則,例如漸變背景,從而導(dǎo)致 PDF 輸出中的網(wǎng)頁呈現(xiàn)不完整等問題。

使用 Browsershot Laravel 生成 PDF 的分步指南

Browsershot Laravel Package 提供了一項服務(wù),該服務(wù)利用 Chrome 的無頭實例從 URL 鏈接(可以是網(wǎng)頁或 HTML)生成 PDF 或圖像。轉(zhuǎn)換過程由 Puppeteer 處理,在幕后控制無頭版本的 Google Chrome。通過使用 Laravel Browsershot,您可以克服使用其他軟件包(如 MPDF)遇到的 CSS 相關(guān)挑戰(zhàn),并獲得符合您要求的清晰 CSS 和 PDF 輸出。

事不宜遲,讓我們深入了解如何使用 Laravel Browsershot 生成 PDF 的分步指南。

第 1 步:安裝和設(shè)置

使用 Browsershot Laravel 的先決條件

開始使用 Laravel 中的 Browsershot 使用 Headless Chrome 和 Laravel 生成 PDF 的第一步是滿足以下基本要求:

  • PHP 8+

  • 節(jié)點

  • NPM

木偶師和圖書館

然后,安裝Puppeteer,它將啟用并安裝我們項目所需的無頭鉻。

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
npm 安裝 puppeteer --global

安裝 Laravel 應(yīng)用程序和 Browsershot

創(chuàng)建你的 Laravel 項目:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
作曲家創(chuàng)建項目 --prefer-dist laravel/laravel:^8.0 myapp

安裝 browsershot 包:

轉(zhuǎn)到您的 Laravel myapp 項目根目錄并輸入以下命令:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
作曲家需要 spatie/browsershot

這將更新您的 composer.json 文件中的依賴項列表,并在您的 vendor 目錄中安裝 browsershot。

想要確保您的 PDF 完美無缺?
聘請具有 Browsershot Laravel 經(jīng)驗的 Laravel 開發(fā)人員,每次都能獲得完美的文檔!

第 2 步:用法

實施包使用并檢查庫是否運行良好

要實現(xiàn) Browsershot,首先我們需要創(chuàng)建一個控制器:

php artisan make:控制器 TestPdfController

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
<?php命名空間 App\Http\Controllers;使用 Illuminate\Http\Request;使用 Spatie\Browsershot\Browsershot;// 參考瀏覽器截圖類 TestPdfController 擴(kuò)展控制器{
   //編寫函數(shù)邏輯生成pdf
  公共函數(shù) printPdf()
    {
$path = public_path("/pdf_temp/");
          如果 (!File::exists($path)) {
             文件::生成目錄($path, 0755, true);
          }
    Browsershot::url('https://google.com')
       ->格式('A4')
       ->顯示背景()
       ->保存($path.'urlToPdf.pdf');echo 'Pdf 生成于 <i>public/pdf_temp/urlToPdf.pdf</i>';
    }}

第 3 步:使用 Laravel 視圖生成 PDF

開發(fā)一個功能,生成一個PDF并存儲到指定的存儲目錄。

  • 將以下代碼添加到您的控制器:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
公共函數(shù) printPdf()
   {          
       $view = view('welcome')->render();        
       $path = public_path("/pdf_temp/");
       如果 (!File::exists($path)) {
           文件::生成目錄($path, 0755, true);
       }
       Browsershot::html($view)->save($path.'htmlToPdf.pdf');      
         
   }

現(xiàn)在要使用該函數(shù),我們需要路由來執(zhí)行該過程:

  • 打開你的 web.php 文件

  • 首先引用您的控制器:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
使用 App\Http\Controllers\TestPdfController;
  • 其次,創(chuàng)建您的路線:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
Route::get('/test-pdf', [TestPdfController::class,'printPdf']);
  • 在網(wǎng)絡(luò)瀏覽器中輸入 URL (http://your-website.com/test-pdf) 以檢查 PDF 是否已成功生成。如果沒有由 Puppeteer 引起的錯誤,您將看到一個加載頁面。

  • 檢查錯誤后,轉(zhuǎn)到 public/pdf_temp 目錄以查找 PDF 文件。

HTML 轉(zhuǎn) PDF.pdf

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF

PDF.pdf 的網(wǎng)址

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF

如果您遇到與 Puppeteer 相關(guān)的任何錯誤,請參閱Spatie 文檔

結(jié)論

使用 Browsershot Laravel 通過 Headless Chrome 和 Laravel 生成 PDF,或在 Laravel 應(yīng)用程序中將 HTML 轉(zhuǎn)換為 PDF,提供了一種簡化且無憂的方法。這消除了對復(fù)雜的第三方應(yīng)用程序的需要,并簡化了 PDF 創(chuàng)建過程中的 CSS 管理。

憑借用戶友好的軟件包和簡單的設(shè)置過程,開發(fā)人員可以輕松生成 PDF,使其成為簡化 PDF 生成過程的理想選擇。但是,如果您是尋求基于 Laravel 的 Web 應(yīng)用程序開發(fā)或升級專業(yè)知識的企業(yè)主。聘請像 Bacancy 這樣的Laravel 開發(fā)公司來優(yōu)化現(xiàn)有應(yīng)用程序或根據(jù)目標(biāo)受眾的興趣和需求創(chuàng)建新的應(yīng)用程序。

言鼎科技

The End