motekar / laravel-pdf
Create PDFs in Laravel apps
Requires
- php: ^8.2
- chrome-php/chrome: ^1.11
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.16.1
- spatie/temporary-directory: ^2.2.1
Requires (Dev)
- ext-imagick: *
- guzzlehttp/guzzle: ^7.9
- larastan/larastan: ^2.7.0
- laravel/pint: ^1.13.7
- nunomaduro/collision: ^7.10
- orchestra/testbench: ^8.18
- pestphp/pest: ^2.30
- pestphp/pest-plugin-arch: ^2.5
- pestphp/pest-plugin-laravel: ^2.2
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan-deprecation-rules: ^1.1.4
- phpstan/phpstan-phpunit: ^1.3.15
- spatie/image: ^3.3.2
- spatie/laravel-ray: ^1.33
- spatie/pdf-to-image: ^2.2
- spatie/pdf-to-text: ^1.52.1
- spatie/pest-expectations: ^1.5
- spatie/pest-plugin-snapshots: ^2.1
- spatie/pixelmatch-php: ^1.0
README
This package provides a simple way to create PDFs in Laravel apps. Under the hood it uses Chromium to generate PDFs from Blade views. You can use modern CSS features like grid and flexbox to create beautiful PDFs.
Unlike spatie/laravel-pdf this package does not require nodejs and puppeteer, it uses chrome-php/chrome instead.
Here's a quick example:
use Motekar\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 Motekar\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 Motekar\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'); }); });
Documentation
Installation
You can install the package via composer:
composer require motekar/laravel-pdf
Under the hood this package uses Google Chrome or Chromium to generate PDFs. You'll need to install any of these browsers on your system.
Usage
This package supports almost every feature of Spatie's Laravel PDF package. For detailed usage documentation, we recommend referring to the comprehensive guide available on Spatie's documentation site. The usage patterns and methods are largely compatible, allowing you to leverage the extensive documentation provided by Spatie for this package as well.
Testing
For running the testsuite, you'll need the pdftotext
CLI which is part of the poppler-utils package. More info can be found in in the spatie/pdf-to-text readme. Usually brew install poppler
will suffice.
Finally run the tests with:
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.