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

言鼎科技 2023-05-20 251

生成 PDF 是许多 Web 应用程序最常见的事情之一,原因是它使用户能够轻松下载和共享可以轻松查看和打印的文档。Laravel 是 Web 应用程序开发市场中著名的 PHP 框架,它还提供了许多工具和库,可让您构建 Web 应用程序,包括用于生成 PDF 的工具。因此,在这篇博文中,我们介绍了一个著名的软件包,即 Browsershot Laravel,它可以使用 Headless Chrome 和 Laravel 生成 PDF,它使您能够在不受传统 PDF 生成工具限制的情况下生成 PDF。

介绍

当前市场上提供了众多 PDF 生成工具,但传统选项通常存在局限性,例如额外的软件依赖性或缺乏定制。Browsershot Laravel 是 Laravel 的一个包,它通过使用 Headless Chrome 启用 PDF 生成来解决这些问题,提供了一种在创建 PDF 时管理 CSS 的解决方案,而其他包(如DomPDFSnappy )可能无法实现。

Laravel 是一种流行的用于构建 Web 应用程序的 PHP 框架,以其丰富的功能而闻名。但是,某些用于生成 PDF 文件的包可能难以处理某些 CSS3 规则,例如渐变背景,从而导致 PDF 输出中的网页呈现不完整等问题。

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

Browsershot Laravel Package 提供了一项服务,该服务利用 Chrome 的无头实例从 URL 链接(可以是网页或 HTML)生成 PDF 或图像。转换过程由 Puppeteer 处理,在幕后控制无头版本的 Google Chrome。通过使用 Laravel Browsershot,您可以克服使用其他软件包(如 MPDF)遇到的 CSS 相关挑战,并获得符合您要求的清晰 CSS 和 PDF 输出。

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

第 1 步:安装和设置

使用 Browsershot Laravel 的先决条件

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

  • PHP 8+

  • 节点

  • NPM

木偶师和图书馆

然后,安装Puppeteer,它将启用并安装我们项目所需的无头铬。

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

安装 Laravel 应用程序和 Browsershot

创建你的 Laravel 项目:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
作曲家创建项目 --prefer-dist laravel/laravel:^8.0 myapp

安装 browsershot 包:

转到您的 Laravel myapp 项目根目录并输入以下命令:

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

这将更新您的 composer.json 文件中的依赖项列表,并在您的 vendor 目录中安装 browsershot。

想要确保您的 PDF 完美无缺?
聘请具有 Browsershot Laravel 经验的 Laravel 开发人员,每次都能获得完美的文档!

第 2 步:用法

实施包使用并检查库是否运行良好

要实现 Browsershot,首先我们需要创建一个控制器:

php artisan make:控制器 TestPdfController

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
<?php命名空间 App\Http\Controllers;使用 Illuminate\Http\Request;使用 Spatie\Browsershot\Browsershot;// 参考浏览器截图类 TestPdfController 扩展控制器{
   //编写函数逻辑生成pdf
  公共函数 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

开发一个功能,生成一个PDF并存储到指定的存储目录。

  • 将以下代码添加到您的控制器:

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

现在要使用该函数,我们需要路由来执行该过程:

  • 打开你的 web.php 文件

  • 首先引用您的控制器:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
使用 App\Http\Controllers\TestPdfController;
  • 其次,创建您的路线:

Browsershot Laravel:使用 Headless Chrome 和 Laravel 生成 PDF
Route::get('/test-pdf', [TestPdfController::class,'printPdf']);
  • 在网络浏览器中输入 URL (http://your-website.com/test-pdf) 以检查 PDF 是否已成功生成。如果没有由 Puppeteer 引起的错误,您将看到一个加载页面。

  • 检查错误后,转到 public/pdf_temp 目录以查找 PDF 文件。

HTML 转 PDF.pdf

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

PDF.pdf 的网址

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

如果您遇到与 Puppeteer 相关的任何错误,请参阅Spatie 文档

结论

使用 Browsershot Laravel 通过 Headless Chrome 和 Laravel 生成 PDF,或在 Laravel 应用程序中将 HTML 转换为 PDF,提供了一种简化且无忧的方法。这消除了对复杂的第三方应用程序的需要,并简化了 PDF 创建过程中的 CSS 管理。

凭借用户友好的软件包和简单的设置过程,开发人员可以轻松生成 PDF,使其成为简化 PDF 生成过程的理想选择。但是,如果您是寻求基于 Laravel 的 Web 应用程序开发或升级专业知识的企业主。聘请像 Bacancy 这样的Laravel 开发公司来优化现有应用程序或根据目标受众的兴趣和需求创建新的应用程序。

言鼎科技

The End