Il y a un certain nombre de librairies PDF qui peuvent vous aider à générer des fichiers PDF via PHP : FPDF, TCPDF, DOMPDF, CEZPDF…
J’ai longtemps travaillé avec FPDF qui est une classe très légère (le fichier fpdf.php pèse 49ko), facile à implémenter mais avec des fonctions un peu basiques.
TCPDF m’a tout d’abord conquis parce qu’elle permet d’envoyer de l’HTML (tableaux, css,…) à la classe. Ceci est une grande avancée puisqu’il n’est plus nécessaire de définir les abscisses et ordonnées de toutes les informations à faire apparaître sur le PDF. Le tableau HTML est affiché comme dans une page Web. Elle offre aussi des outils de transformation qui permettent par exemple d’afficher du texte à 90 degrés, par exemple. Mais la classe TCPDF est beaucoup trop lourde : 963 ko. J’utilise des scripts AJAX pour générer une grande quantité de fichiers PDF et ces scripts doivent charger la classe de 1Mo à chaque AJAX call, ce qui rend le temps de génération des fichiers PDF extrêmement long. J’ai bien essayé d’alléger la classe et enlevant tous les commentaires mais il restait quand même un fichier de 500Ko à charger.
J’ai donc décidé de revenir à FPDF et ai trouvé une classe qui étend la classe FPDF pour autoriser la rotation de texte sur le fichier PDF.
Ce tuto décrira l’implémentation de la classe FPDF (et ses classes de rotation) dans le framework PHP Codeigniter 2.0.3.
Tout d’abord, téléchargez la classe FPDF. Vous la trouverez sur la page de téléchargement de http://www.fpdf.org. Avec la classe PHP fpdf.php, vous trouverez des tutoriels et des docs dans le fichier téléchargé.
Copiez simplement le fichier fpdf.php dans /Codeigniter_2.0.3/application/libraries/ et copiez le répertoire font/ dans /Codeigniter_2.0.3/application/third_party/fpdf/
Allez ensuite sur http://www.fpdf.org/fr/script/script2.php où vous trouverez 2 classes à copier dans le même répertoire libraries/ :
- la classe FPDF_Rotate, une extension de la classe FPDF
- la classe PDF, une extension de la classe FDPF_Rotate
En créant ces 2 classes dans Codeigniter, suivez bien les conseils de CI concernant la création de libraries. Au besoin, vous trouverez les fichiers attachés en bas de ce tutoriel.
Vous définirez ensuite le chemin vers le répertoire font de FPDF dans /Codeigniter_2.0.3/application/config/config.php :
//FPDF FONT DIRECTORY
$config['fonts_path'] = APPPATH.'third_party/fpdf/fonts/';
Enfin, dans votre controller, appelez simplement la librairie et définissez les items nécessaires :
define('FPDF_FONTPATH',$this->config->item('fonts_path'));
$this->load->library(array('fpdf','fpdf_rotate','pdf'));
$this->pdf->Open();
$this->pdf->SetFont('Arial', '', 12);
$this->pdf->SetDrawColor(0);
$this->pdf->RotatedText(10,40,'Hello World!',90);
$this->pdf->MultiCell(100,5,"Test\nSecond line");
$this->pdf->Output('./pdfs/test.pdf', 'F');
Vous pouvez télécharger les fichiers nécessaires : fichiers de la classe pdf
Webliography :