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.

Note : Si vous êtes intéressés par des alternatives gratuites pour générer des PDF, sans passer par des bibliothèques PDF, voyez cette entrée de la FAQ.

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 annotation
cpdf_add_outline -- Ajoute un signet à la page courante
cpdf_arc -- Dessine un arc de cercle
cpdf_begin_text -- Démarre une section de texte
cpdf_circle -- Dessine un cercle
cpdf_clip -- Aligne les dessins sur le chemin courant
cpdf_close -- Ferme un fichier PDF
cpdf_closepath_fill_stroke -- Remplit le chemin, dessine le bord et ferme le chemin
cpdf_closepath_stroke -- Ferme le fichier et dessine une ligne le long du chemin
cpdf_closepath -- Ferme le chemin
cpdf_continue_text -- Affiche le texte à la ligne suivante
cpdf_curveto -- Dessine une courbe
cpdf_end_text -- Termine une section de texte
cpdf_fill_stroke -- Remplit le chemin, et dessine le bord
cpdf_fill -- Remplit le chemin courant
cpdf_finalize_page -- Termine une page
cpdf_finalize -- Termine un document
cpdf_global_set_document_limits -- Fixe les limites d'un document PDF
cpdf_import_jpeg -- Ouvre une image JPEG
cpdf_lineto -- Dessine une ligne
cpdf_moveto -- Fixe le point courant de dessin CPDF
cpdf_newpath -- Commence un nouveau chemin
cpdf_open -- Ouvre un nouveau document PDF
cpdf_output_buffer -- Affiche le document PDF qui est en mémoire
cpdf_page_init -- Commence une nouvelle page
cpdf_place_inline_image -- Place une image dans une page
cpdf_rect -- Dessine un rectangle
cpdf_restore -- Restaure un environnement sauvegardé
cpdf_rlineto -- Dessine une ligne, relativement
cpdf_rmoveto -- Fixe le point courant relativement
cpdf_rotate_text --  Configure l'inclinaison d'un texte
cpdf_rotate -- Effectue une rotation
cpdf_save_to_file -- Ecrit un document PDF dans un fichier
cpdf_save -- Sauve l'environnement courant
cpdf_scale -- Modifie l'échelle
cpdf_set_action_url --  Paramètre un hyper lien
cpdf_set_char_spacing -- Fixe l'espacement des caractères
cpdf_set_creator -- Fixe le créateur d'un document PDF
cpdf_set_current_page -- Fixe la page courante
cpdf_set_font_directories --  Précise les dossiers à fouiller pour rechercher des polices externes
cpdf_set_font_map_file --  Configure le fichier de remplacement de polices externes
cpdf_set_font -- Sélectionne la police courante et sa taille
cpdf_set_horiz_scaling -- Fixe l'échelle horizontale du texte
cpdf_set_keywords -- Fixe les mots-clés d'un document PDF
cpdf_set_leading -- Fixe la distance entre deux lignes
cpdf_set_page_animation -- Fixe l'animation de la transition entre les pages
cpdf_set_subject -- Fixe le sujet d'un document PDF
cpdf_set_text_matrix -- Fixe la matrice du texte
cpdf_set_text_pos -- Fixe la position du texte
cpdf_set_text_rendering -- Détermine le rendu du texte
cpdf_set_text_rise -- Fixe l'élévation du texte
cpdf_set_title -- Fixe le titre d'un document PDF
cpdf_set_viewer_preferences --  Indique comment afficher le document à l'utilisateur
cpdf_set_word_spacing -- Fixe l'espacement des mots
cpdf_setdash -- Fixe le motif de pointillés
cpdf_setflat -- Fixe la platitude (flatness)
cpdf_setgray_fill --  Modifie le niveau de gris comme couleur de remplissage
cpdf_setgray_stroke -- Choisit un niveau de gris comme couleur de dessin
cpdf_setgray --  Modifie un niveau de gris comme couleur de dessin et de remplissage
cpdf_setlinecap -- Fixe le paramètre linecap
cpdf_setlinejoin -- Fixe le paramètre linejoin
cpdf_setlinewidth -- Fixe la largeur de ligne
cpdf_setmiterlimit -- Fixe le paramètre miter limit
cpdf_setrgbcolor_fill -- Choisit une couleur rgb comme couleur de remplissage
cpdf_setrgbcolor_stroke -- Choisit une couleur rgb comme couleur de dessin
cpdf_setrgbcolor --  Choisit une couleur rgb comme couleur de dessin et de remplissage
cpdf_show_xy -- Affiche un texte à une position
cpdf_show -- Imprime un texte à la position courante
cpdf_stringwidth -- Retourne la taille de la police courante
cpdf_stroke -- Dessine une ligne le long du chemin
cpdf_text -- Imprime un texte avec des options
cpdf_translate -- Modifie l'origine du système de coordonnées


Rechercher une fonction PHP

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

5 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Références

  1. Consulter le document html Langue du document: fr Manuel PHP : http://be2.php.net, fonctions clibpdf

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-3697
Document créé le 20/09/06 20:39, dernière modification le Vendredi 17 Juin 2011, 12:12
Source du document imprimé : http://www.gaudry.be/php-rf-ref.cpdf.html Document affiché 2 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,26 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
J'adore la télévision. En fermant les yeux, c'est presque aussi bien que la radio.

Pierre-Jean Vaillard
 
l'infobrol
Nous sommes le Dimanche 03 Juin 2012, 06:36, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)