Create PDF files in Laravel apps
This package provides a simple way to create PDFs in Laravel apps. Under the hood it uses Chromium (via Browsershot ) to generate PDFs from Blade views. You can use modern CSS features like grid and flexbox, or even a framework like Tailwind, to create beautiful PDFs.
Here's a quick example:
use Spatie\LaravelPdf\Facades\Pdf ;
Pdf ::view ('pdfs.invoice' , ['invoice' => $invoice ])
->format ('a4' )
->save ('invoice.pdf' )
This will render the Blade view pdfs.invoice
with the given data and save it as a PDF file.
You can also return the PDF as a response from your controller:
use Spatie\LaravelPdf\Facades\Pdf ;
class DownloadInvoiceController
{
public function __invoke (Invoice $invoice )
{
return Pdf ::view ('pdfs.invoice' , ['invoice' => $invoice ])
->format ('a4' )
->name ('your-invoice.pdf' );
}
}
You can use also test your PDFs:
use Spatie\LaravelPdf\Facades\Pdf ;
it ('can render an invoice' , function () {
Pdf ::fake ();
$invoice = Invoice ::factory ()->create ();
$this ->get (route ('download-invoice' , $invoice ))
->assertOk ();
Pdf ::assertRespondedWithPdf (function (PdfBuilder $pdf ) {
return $pdf ->contains ('test' );
});
});
# # We got badges