Aller au contenu | Aller au menu | Aller à la recherche


PHP PDF

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

Forum FPDF

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

Ressources PHP PDF

Ressources FPDI

Commentaires

1. Le vendredi, mars 11 2011, 15:07 par Xavier

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!

2. Le lundi, mars 14 2011, 09:59 par PHP PDF-1.4 PDF-1.5 PDF-1.6 PDF-1.7 PDF-1.8

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é.

3. Le mardi, mai 31 2011, 01:34 par JCL

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)

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet