Sommaire
Référence des fonctions
Apache
Tableaux
Aspell
Nombres de grande taille
Compression Bzip2
Calendrier
Paiement CCVS
Support COM pour Windows
Objets
ClibPDF
Crack
CURL
Paiement Cybercash
CyberMUT : Crédit Mutuel
Administration Cyrus IMAP
Caractères
DBA
Dates et heures
dBase
DBM
dbx
DB++ Functions
Direct IO
Accès aux dossiers
DOM XML
.NET
Gestion des erreurs
FrontBase
FilePro
Système de fichiers
Forms Data Format
FriBiDi
FTP
Fonctions
Gettext (GNU)
GMP
HTTP
Hyperwave
ICAP
Iconv
Images
IMAP
Informix
InterBase
IRC
Java
LDAP
Email
Traitement de email
Mathématiques
Chaînes de caractères multi-octets
MCAL
Chiffrage mcrypt
Fonctions MCVE
Hash
Microsoft SQL Server
Ming pour Flash
Fonctions diverses
mnoGoSearch
mSQL
MySQL
Sessions Mohawk
Fonctions muscat
Réseau
Ncurses : fonctions de contrôle du terminal
Lotus Notes functions
ODBC unifié
Oracle 8
OpenSSL
Oracle
Ovrimos SQL
Entrées/sorties
Overload
PDF
Paiement par Verisign
Options PHP et informations
POSIX
PostgreSQL
Contrôle des processus
Exécution de programmes externes
Printer functions
Pspell
Readline (GNU)
Recode (GNU)
Expressions régulières compatibles Perl
qtdom
Expressions régulières
Sémaphores et gestion de la mémoire partagée
SESAM
Sessions
Mémoire partagée
Shockwave Flash
SNMP
Sockets
Chaîne de caractères
Sybase
URL
Variables
Fonctions vpopmail
API Windows 32 bits
WDDX
Analyseur syntaxique XML
XMLRPC
XSLT
YAZ
NIS
Zip (décompression)
Zlib (Compression)
|
6.10 ClibPDF
L'extension ClibPDF vous permet de créer des documents PDF avec PHP.
Elle est disponible en téléchargement sur le site
FastIO, mais requiert l'achat d'une
licence pour utilisation commerciale. Les fonctionnalités et API de
ClibPDF sont très similaires à PDFlib.
Cette documentation devrait être lue avec le manuel ClibPDF
sous la main, car il est beaucoup plus détaillé.
Beaucoup de fonctions sont natives de ClibPDF et se retrouvent dans
le module PHP, et tout comme pdflib, elles ont le même nom.
Toutes les fonctions, hormis cpdf_open utilisent
un pointeur sur un document comme premier paramètre. Actuellement,
ce pointeur n'est pas utilisé en interne, car ClibPDF ne supporte
pas la création de plusieurs documents PDF simultanément.
En fait, il ne vaut mieux pas l'envisager, car les résultats sont
aléatoires. Je ne veux même pas imaginer les problèmes
qui pourrait se poser avec les environnements multi-tâches. Selon l'auteur
de ClibPDF, cette situation va changer dans les prochaines versions
(lorsque cette documentation a été traduite, c'était
la version 1.10). Si vous avez besoin de cette fonctionnalité,
utilisez pdflib.
Note |
La fonction cpdf_set_font a changé
depuis le PHP 3.0 pour supporter les polices asiatiques. Le
paramètre d'encodage n'est plus un entier, mais une chaîne.
|
Une caractéristique pratique de ClibPDF (et aussi de
PDFlib) est celle de créer le document
PDF en mémoire, sans fichiers temporaires. ClibPDF permet aussi de
passer les coordonnées avec une unité prédéfinie (ce qui peut être
simulé avec pdf_translate de la librairie
PDFlib).
Un autre atout de ClibPDF est que chaque page peut être
modifiée à tout moment même si une nouvelle
page a été ouverte. La fonction
cpdf_set_current_page vous permet de quitter
temporairement une page, et d'en modifier une autre.
La plupart des fonctions sont très simples d'emploi.
Le plus difficile est probablement de créer un document
PDF simple. L'exemple suivant devrait vous aider à
démarrer. La page contient du texte qui utilise la
police "Times-Roman" en taille 30, outlined. Le texte est souligné.
Exemple simple ClibPDF |
<?php $cpdf = cpdf_open(0); cpdf_page_init($cpdf, 1, 0, 595, 842); cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1"); cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding"); cpdf_set_text_rendering($cpdf, 1); cpdf_text($cpdf, "Times Roman outlined", 50, 750); cpdf_moveto($cpdf, 50, 740); cpdf_lineto($cpdf, 330, 740); cpdf_stroke($cpdf); cpdf_finalize($cpdf); Header("Content-type: application/pdf"); cpdf_output_buffer($cpdf); cpdf_close($cpdf); ?>
|
La distribution pdflib contient un exemple plus complet, qui
crée des séries de pages avec une horloge. Voici
cet exemple convertit en script PHP qui utilise l'extension ClibPDF :
Exemple pdfclock de la distribution pdflib 2.0 |
<?php $radius = 200; $margin = 20; $pagecount = 40; $pdf = cpdf_open(0); cpdf_set_creator($pdf, "pdf_clock.php3"); cpdf_set_title($pdf, "Analog Clock"); while($pagecount-- > 0) { cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0); cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0); /* wipe */ cpdf_translate($pdf, $radius + $margin, $radius + $margin); cpdf_save($pdf); cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0); /* indications des minutes */ cpdf_setlinewidth($pdf, 2.0); for ($alpha = 0; $alpha < 360; $alpha += 6) { cpdf_rotate($pdf, 6.0); cpdf_moveto($pdf, $radius, 0.0); cpdf_lineto($pdf, $radius-$margin/3, 0.0); cpdf_stroke($pdf); } cpdf_restore($pdf); cpdf_save($pdf); /* Indications des 5 minutes */ cpdf_setlinewidth($pdf, 3.0); for ($alpha = 0; $alpha < 360; $alpha += 30) { cpdf_rotate($pdf, 30.0); cpdf_moveto($pdf, $radius, 0.0); cpdf_lineto($pdf, $radius-$margin, 0.0); cpdf_stroke($pdf); } $ltime = getdate(); /* aiguille des heures */ cpdf_save($pdf); cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0); cpdf_moveto($pdf, -$radius/10, -$radius/20); cpdf_lineto($pdf, $radius/2, 0.0); cpdf_lineto($pdf, -$radius/10, $radius/20); cpdf_closepath($pdf); cpdf_fill($pdf); cpdf_restore($pdf); /* aiguille des minutes */ cpdf_save($pdf); cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0); cpdf_moveto($pdf, -$radius/10, -$radius/20); cpdf_lineto($pdf, $radius * 0.8, 0.0); cpdf_lineto($pdf, -$radius/10, $radius/20); cpdf_closepath($pdf); cpdf_fill($pdf); cpdf_restore($pdf); /* aiguille des secondes */ cpdf_setrgbcolor($pdf, 1.0, 0.0, 0.0); cpdf_setlinewidth($pdf, 2); cpdf_save($pdf); cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0)); cpdf_moveto($pdf, -$radius/5, 0.0); cpdf_lineto($pdf, $radius, 0.0); cpdf_stroke($pdf); cpdf_restore($pdf); /* Un petit cercle au centre */ cpdf_circle($pdf, 0, 0, $radius/30); cpdf_fill($pdf); cpdf_restore($pdf); cpdf_finalize_page($pdf, $pagecount+1); } cpdf_finalize($pdf); header("Content-type: application/pdf"); cpdf_output_buffer($pdf); cpdf_close($pdf); ?>
|
Sommaire
|