Générer un fichier PDF avec laravel dompdf
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Créez le projet Laravel 8
- 4- Configurez de la base de données
- 5- Créez un Modèle et des migrations
- 6- Ajoutez des enregistrements dans la base de données
- 7- Créez le fichier model
- 8- Installer laravel-dompdf
- 8.1- Importation
- 8.2- Iintegration
- 8.3- Configuration
- 8.4- Utilisation
- 9- Créer un contrôleur
- 10- Créer un fichier Blade
- 11- Ajouter une route
- 11.1.1- Sommaire du cours Laravel
Générer un fichier PDF avec laravel dompdf
-
Objectifs
- Apprendre les méthodes essentielles pour créer et montrer les exemples de tables de données yajra de laravel 8
- Découvrir comment 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.
-
Présentation
- Dans ce tutoriel, nous utilisons le package laravel-dompdf pour générer un fichier pdf dynamique et en utilisant ce package, nous pouvons également télécharger le fichier pdf sur notre ordinateur local.
- 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).
- Il génère des fichiers PDF en prenant en charge les fonctionnalités suivantes :
- 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)
- Et autres..
- Dans ce tutoriel, nous developpons l’application suivante:
-
Créez le projet Laravel 8
- Ouvrez votre terminal ou l’invite de commande et exécutez la commande ci-dessous:
Composer create-project laravel/laravel Laravel8-PDF
-
Configurez de la base de données
- Comme MySQL est spécifié comme base de données par défaut dans config/database.php, nous n’avons pas besoin de faire de modifications dans ce fichier et nous pouvons donc passer directement au fichier
.env
- Maintenant, vous devrez trouver un fichier nommé
.env
, où vous devrez spécifier les détails du serveur MySQL , comme le nom de la base de données, le nom d’utilisateur, etc. Dans ce fichier, vous devrez rechercher des noms commençant parDB_
. - En cela, vous trouverez la ligne
DB_CONNECTION
= mysql . En dessous se trouvent tous les détails spécifiés pour la connexion à une base de données. - Vous devrez spécifier le nom de la base de données Laravel8-Yajra-Datatables-crud-modal , que nous avons créée, après DB_DATABASE = et également spécifier le nom d’utilisateur et le mot de passe en fonction de vos besoins. Enregistrez ensuite le fichier.
-
Créez un Modèle et des migrations
- Exécutez la commande pour créer un modèle et elle contient le schéma de la table de base de données:
php artisan make:model Etudiant -m
- Ouvrez le fichier database/migrations/timestamp_create_etudiants_table.php et ajoutez le code ci-dessous.
- Ouvrez app/Models/Etudiant.php et ajoutez le code ci-dessous.
- Exécutez la migration à l’aide de la commande suivante:
php artisan migrate
-
Ajoutez des enregistrements dans la base de données
- Placez le code ci-dessous dans database/seeds/DatabaseSeeder.php pour ajouter les faux enregistrements dans la base de données:
- Exécutez la commande suivante pour générer des données factices:
php artisan db:seed
- Vous pouvez utiliser la commande suivante pour obtenir le même résultat:
php artisan db:seed --class=DatabaseSeeder
-
Créez le fichier model
- Ouvrez votre terminal et exécutez la commande suivante ;
php artisan make:model Etudiant -m
- Ok, donc après avoir exécuté la commande ci-dessous, vous trouverez « app/Models/Etudiant.php » et mettez le contenu ci-dessous dans le fichier Etudiant.php:
-
Installer laravel-dompdf
- Pour créer un fichier PDF dans Laravel, nous voulons d’abord télécharger le package laravel-dompdf.
-
Importation
- Pour importer laravel-dompdf avec ses dépendances, ouvrez la console (invite de commandes ou sur terminal) à la racine du projet, exécutez la commande composer suivante :
composer require barryvdh/laravel-dompdf
-
Iintegration
- Maintenant, nous devons enregistrer ce package dans l’environnement de travail Laravel, pour cela, nous devons ouvrir le fichier config/app.php et chargeons-le dans l’application en ajoutant le service provider au tableau $providers et la façade (« PDF » pour faire court) au tableau $aliases.
-
Configuration
- Pour créer le fichier de configuration config/dompdf.php où vous pouvez modifier les options par défaut de dompdf, exécutez la commande artisan suivante :
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
-
Utilisation
- 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 :
- Une vue (template Blade) avec ses données :
- Le chemin vers un fichier :
- Une chaîne de caractères HTML :
- De cet instance PDF, nous pouvons :
- Forcer le navigateur à lancer le téléchargement du fichier PDF généré :
- Ou l’afficher dans le navigateur :
- Ou encore l’enregistrer :
-
Créer un contrôleur
- Après cela, nous devons créer un contrôleur dans notre application Laravel en utilisant la commande composer. Ce contrôleur gérera http request pour convertir le code html en fichier PDF:
php artisan make:controller EtudiantPDFController
- Cette commande créera le contrôleur dans le dossier app/Http/Controllers avec un nom tel que EtudiantPDFController.php .
- Dans ce contrôleur, nous devons d’abord créer la méthode
index()
pour récupérer les données de la base de données et ici, pour récupérer les données, nous devons utiliser la méthode get_etudiant_data() et après cela, dans la méthode index(), nous avons envoyé des données pour afficher le fichier. - Pour convertir des données HTML en PDF, nous avons créé une autre méthode pdf() en utilisant cette méthode, elle convertira le code html en fichier PDF.
- Pour les données html, nous utilisons la méthode convert_etudiant_data_to_html().
- Vous trouverez ci-dessous le code source complet du contrôleur.
-
Créer un fichier Blade
- Après cela, nous avons créé un fichier de vue dans resources/view/liste_etudiant_pdf.blade.php.
- Ce fichier a reçu des données de la méthode
index()
du contrôleur et affiche les données dynamiques au format de table html. - Après cela, nous avons créé un bouton pour convertir ces données html en fichier pdf.
- Lorsque nous avons cliqué sur ce bouton, il a envoyé une demande à la méthode
pdf()
du contrôleur qui convertira le html en fichier PDF en utilisant le package dompdf dans laravel que nous pouvons voir sur la page Web. -
Ajouter une route
// ...
'providers' => [
// ...,
// Service Provider DomPDF
Barryvdh\DomPDF\ServiceProvider::class
],
'aliases' => [
// ...,
// Façade DomPDF
"PDF" => Barryvdh\DomPDF\Facade::class
],
// ...
use App\Etudiant;
use PDF;
// ...
public function getEtudiantPdf (Etudiant $etudiant)
{
// L'instance PDF avec une vue : resources/views/etudiants/liste.blade.php
$pdf = PDF::loadView('etudiants.liste', compact('etudiant'));
}
// ...
$pdf = PDF::loadFile(public_path("documents/fichier.html"));
$pdf = PDF::loadHTML("Mon contenu HTML ici");
use App\Etudiant;
use PDF;
// ...
public function getEtudiantPdf (Etudiant $etudiant)
{
// L'instance PDF avec la vue resources/views/etudiants/liste.blade.php
$pdf = PDF::loadView('etudiants.liste', compact('etudiant'));
// Lancement du téléchargement du fichier PDF
return $pdf->download(\Str::slug($etudiant->title).".pdf");
}
// ...
return $pdf->stream();
$pdf->save(public_path("storage/documents/fichier.pdf"));
Route::get('/liste_etudiant_pdf', 'App\Http\Controllers\EtudiantPDFController@index');
Route::get('/liste_etudiant_pdf/pdf', 'App\Http\Controllers\EtudiantPDFController@pdf');