Créer un PDF en PHP
-
Utilisez la bibliothèque
mpdf
pour créer un PDF en PHP -
Utilisez la bibliothèque
dompdf
pour créer un PDF en PHP
Cet article présentera des méthodes pour créer des PDF en PHP. Nous allons récupérer les données de la base de données, les mettre dans le PDF et les télécharger.
Utilisez la bibliothèque mpdf
pour créer un PDF en PHP
On peut utiliser la librairie externe mpdf
pour créer un PDF en PHP. Nous pouvons récupérer les données de la base de données, les stocker au format PDF et télécharger le PDF. En utilisant cette bibliothèque, nous pouvons créer des PDF à partir de documents HTML. Les documents HTML doivent être encodés en UTF-8. Nous pouvons récupérer les données à ajouter au PDF à partir de la base de données au format HTML. Nous pouvons le télécharger par la commande composer require mpdf/mpd
depuis le répertoire du projet pour utiliser la bibliothèque. La commande installera la bibliothèque mpdf
dans le répertoire du projet. Un fichier vendor
sera créé, et nous devons utiliser la fonction require()
pour inclure le fichier autoload.php
situé dans le dossier vendor
. Nous devons nous assurer que le répertoire où la bibliothèque est installée doit avoir l’autorisation d’écriture.
Nous allons créer un objet à partir du constructeur Mpdf()
et utiliser des méthodes telles que WriteHTML()
et output()
pour créer le PDF. Il existe différents modes dans lesquels nous pouvons sortir le PDF. On peut spécifier les modes dans le deuxième paramètre de la méthode output()
. Les différents modes sont représentés par les options D
, I
, F
et S
. L’option D
téléchargera de force le PDF après l’exécution du script. L’option I
affichera le PDF dans le navigateur après l’exécution du script. Pendant ce temps, l’option F
téléchargera les sauvegardes PDF dans le dossier relatif au fichier PHP. Enfin, l’option F
ne sortira le pdf dans le navigateur que lorsque la méthode output()
est affectée à une variable.
Par exemple, nous avons une base de données nommée phprow
contenant une table nommée Personnes
. Le tableau Personnes
contient les données suivantes.
+----------+----------+-----------+
| PersonID | Name | Address |
+----------+----------+-----------+
| 22 | Harry M | England |
| 32 | Paul P | France |
+----------+----------+-----------+
Tout d’abord, utilisez la fonction require()
pour inclure le fichier vender/autoload.php
. Ensuite, créez et établissez une connexion à la base de données, exécutez la requête SQL pour sélectionner les données de la base de données et créez une table dans la variable $html
. Utilisez le .
opérateur pour concaténer la variable $html
avec les corps du tableau. Créez un tableau avec les en-têtes de tableau ID
, Name
et Address
. Remplissez ensuite la table en récupérant les données ci-dessus à partir de la table Persons
.
Exemple de code :
require('vendor/autoload.php');
$con=mysqli_connect('localhost','root','','phprow');
$res=mysqli_query($con,"select * from Persons");
if(mysqli_num_rows($res)>0){
$html='<table>';
$html.='<tr><td>ID</td><td>Name</td><td>Address</td>';
while($row=mysqli_fetch_assoc($res)){
$html.='<tr><td>'.$row['PersonID'].'</td><td>'.$row['Name'].'</td><td>'.$row['Address'].'</td></tr>';
}
$html.='</table>';
}
Dans l’exemple ci-dessus, nous avons stocké une table avec les données de la base de données dans la variable $html
. Nous avons utilisé le .
opérateur pour concaténer tous les éléments du tableau. Ainsi, nous avons fait un document HTML prêt à écrire dans un PDF.
Ensuite, créez une variable nommée $mpdf
. Affectez l’objet du constructeur Mpdf()
à la variable à l’aide du mot-clé new
. Appelez la fonction WriteHTML()
avec la variable $html
comme paramètre avec l’objet. Créez ensuite une autre variable, $file
, pour stocker le PDF. Joignez files/
avec la fonction time()
et concaténez-le à nouveau avec .pdf
pour créer le nom du fichier. Stockez-le dans la variable $file
. Enfin, appelez la fonction output()
avec $file
comme premier paramètre et l’option I
comme deuxième paramètre.
Ainsi, nous avons récupéré les données de la base de données et créé un PDF avec ces données. L’exemple ci-dessous crée un fichier avec le nom de l’heure actuelle avec une extension .pdf
à l’intérieur du dossier files
. Le PDF sera affiché dans le navigateur après l’exécution du script. Nous pouvons télécharger le PDF à partir du navigateur.
Exemple de code :
$mpdf=new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$file='files/'.time().'.pdf';
$mpdf->output($file,'I');
Utilisez la bibliothèque dompdf
pour créer un PDF en PHP
La bibliothèque dompdf
est également une option pour créer et télécharger un PDF en PHP. Il nous permet de charger le HTML dans le PDF. Cette bibliothèque est très similaire à la bibliothèque mpdf
; seules les méthodes sont différentes. Nous utiliserons les méthodes comme loadHtml()
, render()
et stream()
. Nous devons télécharger la bibliothèque dans notre répertoire de travail à l’aide de la commande composer require dompdf/dompdf
. Il créera le dossier vendor
comme dans la première méthode avec les fichiers composer.json
et composer.lock
.
Par exemple, exigez le vendor/autoload.php
comme première ligne du code dans le programme. Écrivez ensuite le mot-clé use
pour importer la classe Dompdf
en tant que use Dompdf/Dompdf
. Nous pouvons utiliser le même tableau HTML que dans la méthode ci-dessus pour charger le PDF.
require 'vendor/autoload.php';
use Dompdf\Dompdf;
Après avoir stocké le HTML dans une variable $html
, créez une autre variable $dompdf
pour créer un objet de la classe Dompdf
. Appelez ensuite la méthode loadHtml()
avec $html
en paramètre. Appelez ensuite la fonction render()
puis la fonction stream()
avec l’objet $dompdf
.
L’exemple ci-dessous créera un PDF avec le tableau comme dans la première méthode. La méthode render()
rend le HTML sous forme de fichier PDF et la méthode stream()
renvoie le HTML rendu au navigateur. Ainsi, nous pouvons créer un PDF en utilisant la librairie dompdf
en PHP.
Exemple de code :
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn