Formation PUB030 : Laravel, 2019 Générer un document PDF avec Laravel

45.1 DOMPDF Wrapper for Laravel 5


Il est facile de générer un PDF grâce au paquet DOMPDF Wrapper for Laravel 5.

Installation de DOMPDF Wrapper for Laravel 5

Utilisez composer pour télécharger le paquet.

Console Vagrant SSH

composer require barryvdh/laravel-dompdf

Une fois le paquet ajouté (et pas avant), ajoutez le code suivant dans le fichier config\app.php.

Fichier config\app.php

...

'providers' => [

     ...

     /*

      * Application Service Providers...

      */

    ...,

    Barryvdh\DomPDF\ServiceProvider::class,

    ...

Utilisation de DOMPDF Wrapper for Laravel 5

Vous pouvez maintenant générer des fichiers PDF.

Par exemple, pour générer un fichier PDF qui sera immédiatement affiché dans le navigateur :

Contrôleur Laravel (PHP)

$pdf = \App::make('dompdf.wrapper');

$pdf->loadHTML('<h1>Test</h1>');

return $pdf->stream();

Pour générer un PDF qui sera immédiatement téléchargé :

Contrôleur Laravel (PHP)

$pdf = \App::make('dompdf.wrapper');

$pdf->loadHTML('<h1>Test</h1>');

return $pdf->download('NomDuPDF.pdf');

Pour générer un PDF à partir d'une vue :

Contrôleur Laravel (PHP)

$pdf = \App::make('dompdf.wrapper');

$pdf->loadView('produits.pdf', compact('produit'));

return $pdf->stream();

Consultez la documentation sur GitHub pour voir toutes les options possibles.

Utilisation de polices particulières

Si votre vue utilise des polices particulières, vous risquez d'obtenir le message d'erreur suivant lors de la génération du PDF : « ErrorException: fopen(....ufm): failed to open stream: No such file or directory in .../phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php:45 ».

Pour régler ce problème, il vous suffit de créer un dossier vide nommé « fonts » sous le dossier « storage ». Vous pourrez ainsi utiliser vos polices sans problème.

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre