PHP TCPDF

11 Commentaires

Dans cette section, permettez-moi de  partager avec vous un exemple sur l’utilisation de la librairie TCPDF. D’ailleurs c’est quoi TCPDF ?.

TCPDF est une classe PHP, d’utilisation très répandue, permettant de générer des documents PDF. Elle est libre et open source.

Lien de téléchargement : http://www.tcpdf.org/

Après le téléchargement de la librairie,  vous pouvez la mettre dans votre serveur (dossier www), ensuite dé-zipper l’archive.

Comme vous remarquez, il y a deux fichiers php (home et first).

Cet exemple nous permet de créer un fichier pdf via un formulaire, c’est-à-dire nous avons un formulaire avec deux champs à saisir, ensuite après le submit du formulaire nous allons créer un fichier pdf avec ce qui a été saisit.

Nous commençons par le fichier home

<form action="first.php" method="post">
<div>
<label>Votre Nom</label>
<input type="text" name="nom" id="nom" />
</div>
<div>&nbsp; &nbsp; &nbsp;
<label>Votre Pays</label>
<input type="text" name="prenom" id="prenom" />
</div>
<input type="submit" value="Create PDF" />
</form>

Il s’agit d’un simple formulaire avec deux zones de textes et un bouton « create PDF »
Pour le deuxième fichier first.php

<?php
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Amine');
$pdf->SetTitle('TCPDF Example');
$pdf->SetSubject('EXEMPLE D\'UTILISATION');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// set default header data
//$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING);

// set header and footer fonts
//$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
//$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

//set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

//set some language-dependent strings
$pdf->setLanguageArray($l);
// set font
$pdf->SetFont('helvetica', '', 10);

// add a page
$pdf->AddPage();
// récupérer la valeur de la variable nom du formulaire.
$nom = $_POST["nom"];
$prenom = $_POST["prenom"];
$html = '
<h1>Informations</h1>
<div>
<label>Nom :</label> 
<label>'.$nom.'</label>
</div>
<div>
<label>Pays :</label> 
<label>'.$prenom.'</label>
</div>
';

// output the HTML content
$pdf->writeHTML($html, true, 0, true, 0);
// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('example.pdf', 'I');

//============================================================+
// END OF FILE
//==============================================
?>

Pour le deuxième fichier first.php

Dans un premier temps, on inclut les fichiers nécessaires pour pouvoir manipuler la classe TCPDF, ensuite on crée un objet de cette classe, par la suite on appelle les méthodes (les setters). comme SetTitle(), pour mettre des valeurs .

Après on récupère les valeurs des champs du formulaire via le POST, ensuite dans la variable $html, on met le code html qu’on veut afficher.

à la fin on appelle la méthode writeHTMl(), qui prend la variable $html.

Je pense que ce n’est pas difficile d’utiliser cette librairie. Sur la documentation nous avons des bons exemples. http://www.tcpdf.org/examples.php

 

  • DAOUDI Mohamed

    D’abord, je te remercie pour ce bon article. Juste je veux savoir s’il y a des outils qui permet de faire le reporting en php !

    • admin

      Salam Alikem
      Pour le reporting :
      Je te conseille si tu veux générer des fichiers Excel (tu utilises PHPExcel), sinon pour PDF, tu peux voir cette librairie TCPDF. Tout est dépends de tes besoins.
      pour les outils, je n’ai jamais utiliser des outils pour générer des comptes-rendu, souvent j’utilise soit PHPExcel soit TCPDF.
      Mais je te file ce lien
      http://php.software.informer.com/download-php-pdf-report/

      Merci

  • Zakaria

    Merci Amine pour l’article ! apparemment TCPDF est très intéressante, est-ce-qu’elle permet en fait de générer un PDF à partir d’une page HTML ? lui donner juste l’URL de la page html et elle te la génère en PDF, j’ai déjà vu ça dans une autre librairie dont je me rappel pas le non…

    • admin

      Re-Salam
      Actuellement je ne connais pas une méthode qui permet de faire cela directement, mais dans l’exemple, la variable $html contient des balises html, donc tu peux mettre directement ton code html la dedans.
      Pour les styles on peut mettre notre style directement dans les balises, ou bien entre les balises (toujours dans la variable $html).
      Je te file cet exemple :

      Code PHP : http://www.tcpdf.org/examples/example_061.phps

      Sortie PDF : http://www.tcpdf.org/examples/example_061.pdf

      dsl pour les liens se sont pas cliquables. mais bon ils seront.

  • Zakaria

    Merci bien ! c’est claire avec les exemples

  • Abdoo

    Bonjour et Merci pour le partage Amine ^^

    Je voulais savoir qu’est ce qu’on peut ajouter ou modifier si on veut utiliser l’arabe dans ton exemple ?
    Par exemple quand j’ajouter un nom et un prénom dans le formulaire de ton exemple, je n’obtiens que des points d’interrogation dans le fichier PDF …. même quand je remplace la ligne :
    require_once(‘tcpdf/config/lang/eng.php’);
    par :
    require_once(‘tcpdf/config/lang/ara.php’);

    • admin

      Salam,

      Je suis désolé pour le retard, mais est ce que tu as la langue Arabe installée.

    • admin

      Salam,
      normalement avec un font //$pdf->SetFont(‘aealarabiya’,  », 10);
      et un texte écrit en arabe, ça devrait marcher

      sur ma version actuelle je n’ai pas ce font, par contre ça bien marcher avec un font de type
      //dejavusans
      $pdf->SetFont(‘dejavusans’,  », 9);
      Noter bien que j’ai inclus que l’anglais require_once(‘tcpdf/config/lang/eng.php’);

  • Amya

    j’arrive pas à afficher les variable en arabes

  • Mathiou

    bonjour,
    je voudrai vos conseils sur la methode a suivre pour recupérer le numero de ligne courante
    l’or de la generation d’un fichier PDF avec TCPDF. j’avais pensé qu’il existait une fonction prédéfinie mais j’en ai pas vu. alors comment on fait. je vous rappel que mon souci est d’appliquer différent styles aus différent éléments que je parcours dans une boucle for avant la génération?

  • Ade

    Bonjour, merci pour ce tutoriel, très clair !

    J’aurais une question, est-il possible avec TCPDF de récupérer n’importe quelle valeur présente dans n’importe quelle balise html ?

    Par exemple, disons que dans ma vue j’ai des « je suis un label », peut-on récupérer la valeur « je suis un label » avec TCPDF ? En effet, dans mon formulaire, j’ai des labels modifiables dynamiquement, c’est pour cela que je dois récupérer les valeurs. Pour le moment, c’est pas terrible, je mets les valeurs dans des input hidden afin de pouvoir les récupérer.

    Merci, cordialement.

    Ade