Manuel PHP
Précédent |  | Suivant

# CXII. Fonctions PDF

# Introduction

Les fonctions PDF permettent de créer des fichiers PDF en utilisant la bibliothèque PDFlib créée par Thomas Merz.

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

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 inclue 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();() qui sera utilisée en tant que premier paramètre dans tous les futurs appels aux fonctions, e.g. 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, e.g. comme 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.

> Note : Cette extension a été déplacée dans PECL depuis PHP 4.3.9.

# Pré-requis

PDFlib est disponible en téléchargement sur http://www.pdflib.com/products/pdflib/index.html, mais impose l'achat d'une license pour l'utiliser commercialement.

# Problèmes avec les anciennes versions de PDFlib

Toutes les versions de PHP 4 éditées après le 9 Mars 2000 ne suportent pas les versions de PDFlib plus anciennes que PDFlib 3.0.

PDFlib 4.0 et plus récent est supporté par PHP 4.3 et plus récent.

# Installation

Cette extension PECL n'est pas intégrée à PHP. Des 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.3.9, voous devez installer cette extension via PEAR, en utilisant la commande suivante : pear install pdflib.

# Types de ressources

Cette extension ne définit aucune ressource.

# Remarque sur les fonctions obsolètes de la PDFlib

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.

# Exemples

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; ?>`

Précédent | Sommaire | Suivant
preg_split | Niveau supérieur | pdf_activate_item