Generating PDFs with spatie/browsershot in Laravel

hkp22

Harish Kumar

Posted on January 11, 2024

Generating PDFs with spatie/browsershot in Laravel

The spatie/browsershot package provides an easy way to generate PDFs from HTML in Laravel applications. With just a few lines of code, you can convert blades, DOM elements, or external URLs to PDFs.


Laravel PDF Export Tutorial

Installation

You can install the package via Composer:



composer require spatie/browsershot


Enter fullscreen mode Exit fullscreen mode

This will install the package and its dependencies.

Usage

To generate a PDF from a blade template, you can do:



// Load the template 
$template = (new \Spatie\Browsershot\Browsershot())
    ->bodyHtml('<h1>Hello World</h1>') 

// Save as a PDF 
$template->savePdf('hello-world.pdf');


Enter fullscreen mode Exit fullscreen mode

You can also pass a view to convert the rendered HTML to PDF:



$pdf = Browsershot::html('hello-world-template', ['name' => 'John'])
    ->savePdf('report.pdf');


Enter fullscreen mode Exit fullscreen mode

To generate a PDF from a URL:



Browsershot::url('https://www.example.com')
    ->savePdf('example.pdf');


Enter fullscreen mode Exit fullscreen mode

There are many other options like setting paper size, margins, landscape/portrait orientation, and more.

Headers and Footers

You can add custom HTML headers and footers to the PDF using the headerHtml and footerHtml methods:



Browsershot::url('https://www.example.com')
->headerHtml('<p>This is my header</p>')
->footerHtml('<p>Copyright 2021</p>')
->savePdf('example.pdf');

Enter fullscreen mode Exit fullscreen mode




Additional Options

Here are some other useful options:

  • setNodeBinary - Set a custom Node binary to use for PDF generation
  • setNpmBinary - Set a custom NPM binary to use for PDF generation
  • setOption - Customize the underlying wkhtmltopdf options
  • showBackground - Show background graphics and colors
  • landscape - Orient page landscape
  • margins - Set margins (in mm)
  • pages - Convert only specific pages

Here you can more about
PDF generation via browsershot.

Demo Project

For a full demo project showing PDF generation via browsershot, check out this example Laravel app.

So in summary, the spatie/browsershot package provides a simple Laravel interface to generate PDFs from HTML, CSS, and web URLs. It can be used for many use cases like generating invoices, reports, receipts, and more.

Buy Me A Coffee

💖 💪 🙅 🚩
hkp22
Harish Kumar

Posted on January 11, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related