Laravel Generer Un PDF Avec Laravel Dompdf 19092021
Laravel Generer Un PDF Avec Laravel Dompdf 19092021
Laravel Generer Un PDF Avec Laravel Dompdf 19092021
dompdf
Un tutoriel pour créer un fichier PDF à partir d'un code HTML ou d'une vue (template Blade) avec le package
laravel-dompdf dans un projet Laravel.
Sommaire
Laravel-dompdf, qu'est-ce ?
Installer laravel-dompdf
Utiliser laravel-dompdf
Astuces
Laravel-dompdf, qu'est-ce ?
Le package laravel-dompdf est un wrapper pour Laravel de la librairie Dompdf qui permet de convertir le code
HTML en PDF (Portable Document Format).
La plupart des propriétés CSS 2.1 et CSS 3, les feuilles de style internes et externes
La plupart des attributs HTML 5
Les images (GIF, PNG, JPG, …) et offre un support pour SVG
Les tableaux (lignes, colonnes, bordures de tableau, style de cellule, …)
La police d’écriture (font)
…
Installer laravel-dompdf
Voici la procédure pour importer, intégrer et configurer le package laravel-dompdf dans un projet Laravel :
1. importation
Pour importer laravel-dompdf avec ses dépendances, ouvrez la console (invite de commandes) à la racine du
projet, exécutez la commande composer suivante :
2. Intégration
Laravel-dompdf importé, chargeons-le dans l’application en ajoutant le service provider au tableau $providers et
la façade (« PDF » pour faire court) au tableau $aliases dans le fichier de configuration config/app.php :
// ...
'providers' => [
// ...,
// Service Provider DomPDF
Barryvdh\DomPDF\ServiceProvider::class
],
'aliases' => [
// ...,
// Façade DomPDF
"PDF" => Barryvdh\DomPDF\Facade::class
],
// ...
3. Configuration
Pour créer (copier) le fichier de configuration config/dompdf.php où vous pouvez modifier les options par
défaut de dompdf, exécutez la commande artisan suivante :
Nous pouvons aussi modifier ces options dans le code avant de générer le PDF avec la méthode setOptions() :
PDF::setOptions([
"defaultFont" => "Courier",
"defaultPaperSize" => "a4",
"dpi" => 130
]);
Utiliser laravel-dompdf
Maintenant que laravel-dompdf est installé et configuré, nous pouvons créer une nouvelle instance
Barryvdh\DomPDF\PDF en indiquant le contenu du fichier PDF par :
use App\Post;
use PDF;
// ...
public function getPostPdf (Post $post)
{
// L'instance PDF avec une vue : resources/views/posts/show.blade.php
$pdf = PDF::loadView('posts.show', compact('post'));
}
// ...
$pdf = PDF::loadFile(public_path("documents/fichier.html"));
use App\Post;
use PDF;
// ...
public function getPostPdf (Post $post)
{
// L'instance PDF avec la vue resources/views/posts/show.blade.php
$pdf = PDF::loadView('posts.show', compact('post'));
}
// ...
return $pdf->stream();
Ou encore l'enregistrer :
$pdf->save(public_path("storage/documents/fichier.pdf"));
Astuces
1. Nous pouvons combiner les méthodes de la manière suivante :
3. Pour faire un saut de page, nous pouvons utiliser la propriété CSS page-break-before ou page-break-after :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Ma page</title>
</head>
<body>
<h1>Titre de la page 1</h1>
<div>Contenu de la page 1</div>
<!-- Saut de page -->
<div style="page-break-after: always;" ></div>