PHP PDF
Par PlaceOweb le dimanche, novembre 14 2010, 19:03 - PHP - Lien permanent
Comment faire du PDF avec PHP ? Générer un document .pdf avec un script php. Et encore mieux, utiliser un document .pdf existant et le compléter. Sans utiliser les librairies PDF natives de PHP ( PDF pour créer des fichiers PDF en utilisant la bibliothèque PDFlib, et le Forms Data Format (FDF) qui est un format de formulaire pour les documents PDF ), voici une présentation de l'historique FPDF, ses alternatives pour UTF-8 et les modèles de document (lire un PDF existant en PHP et le compléter, puis l'enregistrer ou le retourner à travers un navigateur).
PDF & PHP
Pour résumer, la librairie principale initiale de génération de PDF était FPDF. Mais depuis l'UTF-8 est devenu un standard, d'où l'addon UTF8 à FPDF avec TFPDF. Cette librairie FPDF est l'origine du fork (copie et dérivation) TCPDF qui reprends les mêmes fonctionnalité et en rajoute en natif (UTF-8, codes barres, ...)
Concernant la lecture d'un document word, excel (converti) en PDF pour en compléter son contenu, il faut s'orienter sur FPDI qui permet d'utiliser un fichier existant comme modèle de document PDF à remplir. Cette libraire est compatible FPDF et TCPDF.
FPDF
FPDF permet de générer des fichiers PDF en pur PHP, c'est-à-dire sans utiliser la librairie PDFlib.
UTF-8
Par défaut il ne gère pas l'UTF-8. Mais il est de plus possible d'utiliser l'UTF-8 avec FPDF : tFPDF (téléchargement de tfpdf.php sur cette page).
Cette classe est une version modifiée de FPDF qui ajoute le support de l'UTF-8. De plus, elle incorpore dans le document uniquement les portions des polices qui sont effectivement utilisées, réduisant ainsi la taille du fichier PDF. Ces fonctionnalités ont été développées à l'origine pour le projet mPDF. Note : cette classe requiert l'extension mbstring.
mPDF : Une classe PHP pour générer des fichiers PDF à partir de HTML avec Unicode/UTF-8 et support CJK
Template PDF
FPDI - Import existing PDF documents into FPDF
FPDI est une collection de classes PHP facilitant aux développeurs de lire les pages des documents PDF existants et de les utiliser comme modèles dans FPDF. Mis à part une FPDF, FPDI ne nécessite aucune extension particulière PHP.
FPDI and tFPDF : Cet exemple montre comment FPDI travaille en collaboration avec tFPDF. tFPDF est une version de FPDF, qui supporte l'UTF-8 et font-sous-ensembles.
TCPDF
TCPDF est une classe PHP pour générer des documents PDF sans nécessiter des extensions externes. TCPDF prends en charge UTF-8, Unicode, langues RTL, XHTML, Javascript, les signatures numériques, des codes à barres et beaucoup plus.
Selon Wikipedia, 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.
TCPDF est actuellement la seule librairie PHP de génération PDF offrant un support complet de l'encodage UTF-8 et des langues s'écrivant de droite à gauche, incluant le texte bidirectionnel.
TCPDF est aussi l'une des librairies PHP les plus utilisées au monde, étant donné qu'elle est intégrée de base dans les CMS, applications et frameworks PHP les plus répandus, tels que : Joomla, Drupal, ...
La classe TCPDF a été dérivée en 2002 de la classe FPDF du domaine public mais a été presque entièrement réécrit et des centaines de nouvelles fonctionnalités ajoutées, tels que les codes barres, ...
Parmi les plus de 200 000 projets hébergés sur SourceForge, TCPDF est l'un des plus actifs. Son meilleur classement, atteint le 3 avril 2010, est la 6e position.
Template PDF
Tout comme avec FDPF, vous pouvez utiliser TCPDF avec FPDI est une collection de classes PHP facilitant aux développeurs de lire les pages des documents PDF existants et de les utiliser comme modèles dans FPDF. Mis à part une FPDF, FPDI ne nécessite aucune extension particulière PHP.
FPDI and TCPDF : Cette démonstration présente comment utiliser FPDI pour ajouter simplement une page PDF en fond de chaque page.
Ressources TCPDF
- Reading and Modifying PDF Files Using PHP
- PDF Templates using TCPDF Unfortunately, TCPDF cannot open/read an existing PDF nor can it use a PDF as template. Fortunately, I stumbled on FPDI which extends TCPDF with this feature
Ressources PHP PDF
- Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF : Forum d'entraide sur la gestion dynamique de documents PDF avec PHP. Exemples : PDFLib, eZPdf, PhpToPdf
- Archives pour ‘ Pdf ’
- HTML2PDF, convertisseur HTML vers PDF librairie conçue pour gérer principalement les TABLE imbriquées afin de générer des factures, bons de livraison, et autres documents officiels. HTML2PDF est maintenant écrit exclusivement en PHP5 et utilise TCPDF au lieu de FPDF. Après quelques recherches, il semble que la principale différence (importante !) entre FPDF et TCPDF est le support de l’UTF8 par cette bibliothèque TCPDF.
Ressources FPDI
- Utiliser des templates en PDF avec FPDF
Commentaires
Bonjour et merci pour l'article!
Je suis actuellement confronté à cette problématique.
Le besoin était double:
* lire des PDF, pour en compter les pages et vérifier la bonne forme des documents
* générer un PDF à partir de donnée en DB
La génération de documents se passes sous TCPDF sans le moindre souci, mais la lecture est une autre paire de manches...
Mon choix s'est tourné vers un mix Zend_Pdf (dispo dans Zend Framework) et TCPDF. Cependant l'une comme l'autre librairie ne sait pas lire des documents PDf en version > 1.4, et mes utilisateurs fournissent régulièrement des PDf en version 1.6 voire 1.7.
Je souhaiterais tant que possible éviter d'utiliser une lib Java et le bridge PHP-Java et conserver une stack applicative 100% PHP, c'est pourquoi je voulais savoir si tu t'étais confronté à cette difficulté et dans ce cas, quelle solution tu avais choisie.
Merci d'avance!
Non heureusement pour moi, je n'ai pas rencontré ce problème de lecture de document PDF.
Par contre contre je suis surpris, car avec FPDI j'arrive à lire (importer en tant que template) du PDF-1.4 et PDF-1.5
Après, je n'ai pas de document plus récent en PDF-1.6 et 1.7, donc je n'ai pas testé.
FPDI ne supporte pas nativement les versions récentes de pdf (> 1.4). Par contre sur le site de FPDI (http://www.setasign.de/) ils vendent un parser complémentaire qui rend FPDI compatible avec les dernières versions de PDF.
A noter, dans mon cas, certains pdf 1.5 sont passés, d'autres pas ... mais je n'ai pas creusé plus loin ... (probablement lié a une histoire de compression)