Créer un PDF en PHP

Subodh Poudel 30 janvier 2023
  1. Utilisez la bibliothèque mpdf pour créer un PDF en PHP
  2. Utilisez la bibliothèque dompdf pour créer un PDF en PHP
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 Poudel avatar Subodh Poudel avatar

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