Les fonctions PDF permettent de créer des fichiers PDF en utilisant
la bibliothèque PDFlib créée initialement par
Thomas Merz et qui est
actuellement maintenue par PDFlib GmbH.
La documentation de cette section est uniquement destinée à être
une introduction aux fonctions disponibles, et ne doit pas être
considérée comme une référence exaustive. Reportez-vous à la
documentation incluse dans la distribution de PDFlib pour plus
de détails et d'explications. Elle fournit une excellente
référence des capacités de PDFlib, et contient la documentation
la plus à jour.
Pour commencer, nous vous conseillons de regarder du côté des exemples
fournis avec le paquet PDFlib. Ces exemples montrent la création d'un texte
simple, de vecteurs ou encore de graphiques, en passant par l'utilisation
de fonctions hauts niveaux comme PDI.
Toutes les fonctions de la PDFlib et du module PHP ont des noms
et des arguments identiques. Vous aurez à comprendre quelques
concepts basiques de PDF et PostScript pour l'utiliser efficacement.
Toutes les longueurs et coordonnées sont mesurées en points
PostScript. Il y a généralement 72 points PostScript pour faire
un pouche (2.54 cm), mais cela dépend de la résolution de sortie.
Reportez-vous au manuel de référence PDFlib inclus dans la distribution
de PDFlib pour plus de détails sur le système de coordonnées.
Avec la version 6, PDFlib offre une API orientée objet pour PHP 5
en plus de l'API orientée fonctions pour PHP 4. Voici les plus grandes
différences :
En PHP 4, tout d'abord, une ressource PDF doit être récupérée
avec l'appel à une fonction comme
$p = PDF_new();
Cette ressource PDF est utilisée en tant que premier paramètre dans tous
les prochains appels de fonctions, comme dans
PDF_begin_document($p, "", "").
En PHP 5, un objet PDFlib est créé plutôt avec
$p = new PDFlib().
Cet objet offre toutes les fonctions de l'API PDFlib en tant que méthodes,
par exemple avec
$p->begin_document("", "").
En plus, les exceptions ont été introduites en PHP 5 qui sont supportées
dans la version 6 ou supérieure de la PDFlib.
Lisez les exemples ci-dessous
pour plus d'informations.
Note :
Si vous êtes intéressé par des alternatives gratuites pour
générer des PDF, sans passer par des bibliothèques PDF, reportez-vous Ã
cette entrée de la FAQ.
Cette extension PECL
n'est pas intégrée à PHP.
Des informations sur l'installation de ces extensions PECL
peuvent être trouvées dans le chapitre du manuel intitulé Installation
des extensions PECL. D'autres informations comme les notes sur les nouvelles
versions, les téléchargements, les sources des fichiers, les informations concernant les mainteneurs
ainsi qu'un CHANGELOG, peuvent être trouvées ici :
http://pecl.php.net/package/pdflib.
Pour inclure le support de la PDFlib dans votre PHP < 4.3.9, il faut compiler
PHP avec l'option --with-pdflib[=DIR]. DIR
est le dossier d'installation de PDFlib et, par défaut, il vaut
/usr/local.
Depuis PHP 4.0.5, l'extension PHP pour la PDFlib est officiellement
supportée par PDFlib GmbH. Cela signifie que toutes les fonctions décrites
dans le manuel de référence de la PDFlib (PDFlib V3.0 ou supérieur) sont
supportées par PHP 4 avec exactement la même signification et les
mêmes paramètres. Cepdentant, avec la PDFlib V5.0.4 ou supérieure,
tous les paramètres doivent être spécifiés. Pour des raisons de compatibilité,
l'implémentation de la PDFlib supporte la plupart des fonctions obsolètes, mais
elles doivent être remplacées par leur nouvelle version. PDFlib GmbH
ne fournira aucun support pour les problèmes survenant lors de l'utilisation
de ces fonctions obsolètes. La documentation de cette section indique les anciennes fonctions
comme "obsolètes" et donne la fonction qui doit être utilisée à la place.
La plupart des fonctions sont simples d'emploi. Le plus difficile
est probablement de créer un fichier PDF simple. L'exemple suivant
devrait vous mettre sur les rails. Il est développé en PHP 4 et
crée un fichier hello.pdf d'une page.
Il définit quelques champs de contenu et charge la police
Helvetica-Bold et affiche le texte "Bonjour le monde (dit PHP) !".
Exemple 1. Exemple "Bonjour le monde !" avec PDFlib en PHP 4
<?php $p = PDF_new();
/* Ouvre un nouveau fichier PDF ; insère un nom de fichier pour créer le PDF sur le disque */ if (PDF_begin_document($p, "", "") == 0) { die("Erreur : " . PDF_get_errmsg($p)); }
PDF_set_info($p, "Creator", "hello.php"); PDF_set_info($p, "Author", "Rainer Schaaf"); PDF_set_info($p, "Title", "Bonjour le monde (PHP) !");
PDF_begin_page_ext($p, 595, 842, "");
$font = PDF_load_font($p, "Helvetica-Bold", "winansi", "");
PDF_setfont($p, $font, 24.0); PDF_set_text_pos($p, 50, 700); PDF_show($p, "Bonjour le monde "); PDF_continue_text($p, "(dit PHP) !"); PDF_end_page_ext($p, "");
PDF_end_document($p, "");
$buf = PDF_get_buffer($p); $len = strlen($buf);
header("Content-type: application/pdf"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=hello.pdf"); print $buf;
PDF_delete($p); ?>
|
|
L'exemple suivant vient avec la distribution de la PDFlib pour PHP 5.
Il utilise le nouveau gestionnaire d'exceptions ainsi que les nouvelles fonctionnalités
objets disponible en PHP 5. Il crée le fichier hello.pdf
d'une seule page. Il définit quelques champs de contenu et charge la police
Helvetica-Bold et affiche le texte "Bonjour le monde (dit PHP) !".
Exemple 2. Exemple "Bonjour le monde !" avec PDFlib en PHP 5
<?php
try { $p = new PDFlib();
/* Ouvre un nouveau fichier PDF ; insère un nom de fichier pour créer le PDF sur le disque */ if ($p->begin_document("", "") == 0) { die("Erreur : " . $p->get_errmsg()); }
$p->set_info("Creator", "hello.php"); $p->set_info("Author", "Rainer Schaaf"); $p->set_info("Title", "Bonjour le monde (PHP) !");
$p->begin_page_ext(595, 842, "");
$font = $p->load_font("Helvetica-Bold", "winansi", "");
$p->setfont($font, 24.0); $p->set_text_pos(50, 700); $p->show("Bonjour le monde "); $p->continue_text("(dit PHP) !"); $p->end_page_ext("");
$p->end_document("");
$buf = $p->get_buffer(); $len = strlen($buf);
header("Content-type: application/pdf"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=hello.pdf"); print $buf; } catch (PDFlibException $e) { die("Une exception PDFlib est survenu dans l'exemple hello :\n" . "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); } catch (Exception $e) { die($e); } $p = 0; ?>
|
|