Manuel PHP

Table des matières

Préface
I. Au moment de commencer
II. Installation et configuration
III. Référence du langage
IV. Sécurité
V. Caractéristiques
VI. Référence des fonctions
VII. PHP et le moteur interne Zend
VIII. FAQ : foire Aux Questions
IX. Annexes
Remerciements



XIV. Fonctions ClibPDF

Introduction

L’extension ClibPDF vous permet de créer des documents PDF avec PHP. 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 natives de ClibPDF et du module PHP, de même que celles de PDFlib 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 pourraient 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é écrite, c’était la version 1.10). Si vous avez besoin de cette fonctionnalité, utilisez pdflib.

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 bibliothèque 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é.

Note : Cette extension a été déplacée dans le module PECL et ne sera plus intégrée dans PHP à partir de PHP 5.1.0.

Pré-requis

Pour utiliser les fonctions ClibPDF vous devez installer la libriaire ClibPDF. Elle est disponible au téléchargement sur le site de FastIO, mais elle impose l’achat d’une licence pour utilisation commerciale. PHP requiert que vous utilisiez ClibPDF >= 2.

Installation

Pour pouvoir utiliser ces fonctions, vous devez compiler PHP avec l’option “–with-cpdflib[=DIR]”. DIR est le dossier d’installation de CPDFLib et, par défaut, il vaut “/usr”. De plus, vous pouvez spécifier les bibliothèques TIFF et JPEG que vous utilisez. Pour cela, ajoutez les options de configuration “–with-jpeg-dir[=DIR]” et “–with-tiff-dir[=DIR]”.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Constantes pré-définies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l’exécution.

“CPDF_PM_NONE” (entier)

“CPDF_PM_OUTLINES” (entier)

“CPDF_PM_THUMBS” (entier)

“CPDF_PM_FULLSCREEN” (entier)

“CPDF_PL_SINGLE” (entier)

“CPDF_PL_1COLUMN” (entier)

“CPDF_PL_2LCOLUMN” (entier)

“CPDF_PL_2RCOLUMN” (entier)

Exemples

Exemple 1. Exemple simple ClibPDF

<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
cpdf_begin_text($cpdf);
cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding");
cpdf_set_text_rendering($cpdf, 1);
cpdf_text($cpdf, "Times Roman outlined", 50, 50);
cpdf_end_text($cpdf);
cpdf_moveto($cpdf, 50, 50);
cpdf_lineto($cpdf, 740, 330);
cpdf_stroke($cpdf);
cpdf_finalize_page($cpdf, 1);
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 converti en script PHP qui utilise l’extension ClibPDF :

Exemple 2. 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.php");
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);
 
  /* minute strokes */
  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);
 
  /* 5 minute strokes */
  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();
 
  /* draw hour hand */
  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);
 
  /* draw minute hand */
  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);
 
  /* draw second hand */
  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);
 
  /* draw little circle at center */
  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);
?>

Voir aussi

Voir aussi la documentation de PDFlib.

Table des matières

cpdf_add_annotation – Ajoute une annotationcpdf_add_outline – Ajoute un signet à la page courantecpdf_arc – Dessine un arc de cerclecpdf_begin_text – Démarre une section de textecpdf_circle – Dessine un cerclecpdf_clip – Aligne les dessins sur le chemin courantcpdf_close – Ferme un fichier PDFcpdf_closepath_fill_stroke – Remplit le chemin, dessine le bord et ferme le chemincpdf_closepath_stroke – Ferme le fichier et dessine une ligne le long du chemincpdf_closepath – Ferme le chemincpdf_continue_text – Affiche le texte à la ligne suivantecpdf_curveto – Dessine une courbecpdf_end_text – Termine une section de textecpdf_fill_stroke – Remplit le chemin, et dessine le bordcpdf_fill – Remplit le chemin courantcpdf_finalize_page – Termine une pagecpdf_finalize – Termine un documentcpdf_global_set_document_limits – Fixe les limites d’un document PDFcpdf_import_jpeg – Ouvre une image JPEGcpdf_lineto – Dessine une lignecpdf_moveto – Fixe le point courant de dessin CPDFcpdf_newpath – Commence un nouveau chemincpdf_open – Ouvre un nouveau document PDFcpdf_output_buffer – Affiche le document PDF qui est en mémoirecpdf_page_init – Commence une nouvelle pagecpdf_place_inline_image – Place une image dans une pagecpdf_rect – Dessine un rectanglecpdf_restore – Restaure un environnement sauvegardécpdf_rlineto – Dessine une lignecpdf_rmoveto – Fixe le point courantcpdf_rotate_text – Configure l’inclinaison d’un textecpdf_rotate – Effectue une rotationcpdf_save_to_file – Écrit un document PDF dans un fichiercpdf_save – Sauve l’environnement courantcpdf_scale – Modifie l’échellecpdf_set_action_url – Paramètre un hyper liencpdf_set_char_spacing – Fixe l’espacement des caractèrescpdf_set_creator – Définit le créateur d’un document PDFcpdf_set_current_page – Définit la page courantecpdf_set_font_directories – Définit les dossiers dans lesquels on doit rechercher des polices externescpdf_set_font_map_file – Configure le fichier de remplacement de polices externescpdf_set_font – Sélectionne la police courante et sa taillecpdf_set_horiz_scaling – Fixe l’échelle horizontale du textecpdf_set_keywords – Fixe les mots-clés d’un document PDFcpdf_set_leading – Fixe la distance entre deux lignescpdf_set_page_animation – Fixe l’animation de la transition entre les pagescpdf_set_subject – Fixe le sujet d’un document PDFcpdf_set_text_matrix – Fixe la matrice du textecpdf_set_text_pos – Fixe la position du textecpdf_set_text_rendering – Détermine le rendu du textecpdf_set_text_rise – Fixe l’élévation du textecpdf_set_title – Fixe le titre d’un document PDFcpdf_set_viewer_preferences – Indique comment afficher le document à l’utilisateurcpdf_set_word_spacing – Fixe l’espacement des motscpdf_setdash – Définit le motif de pointilléscpdf_setflat – Définit la platitude (flatness)cpdf_setgray_fill – Définit le niveau de gris comme couleur de remplissagecpdf_setgray_stroke – Choisit un niveau de gris comme couleur de dessincpdf_setgray – Modifie un niveau de gris comme couleur de dessin et de remplissagecpdf_setlinecap – Fixe le paramètre linecapcpdf_setlinejoin – Fixe le paramètre linejoincpdf_setlinewidth – Fixe la largeur de lignecpdf_setmiterlimit – Fixe le paramètre miter limitcpdf_setrgbcolor_fill – Choisit une couleur rgb comme couleur de remplissagecpdf_setrgbcolor_stroke – Choisit une couleur rgb comme couleur de dessincpdf_setrgbcolor – Choisit une couleur rgb comme couleur de dessin et de remplissagecpdf_show_xy – Affiche un texte à une positioncpdf_show – Imprime un texte à la position courantecpdf_stringwidth – Retourne la taille de la police courantecpdf_stroke – Dessine une ligne le long du chemincpdf_text – Imprime un texte avec des optionscpdf_translate – Modifie l’origine du système de coordonnées

Travail collaboratif

Contribuez, en ajjoutant des elements a cette page de manuel :

Merci de votre aide
L’equipe Php.fr

 


Index | Afficher le texte source | Anciennes révisions | Derniers changements | Connexion
©2007 Wiki Copyright