DessinerGéométrieLe format PDF utilise la même géométrie que le format PostScript. Elle démarre d'en bas à gauche et est mesuré en points (1/72 inch soit 0,352778 mm). La taille d'une page peut-être récupéré depuis un objet page :
CouleursLe format PDF a d'excellentes capacités dans la représentation des couleurs. Le module Zend_Pdf supporte les espaces de couleur : niveaux de gris, RGB et CMJN. Chacun d'entre eux peut-être utilisé à chaque fois qu'un objet Zend_Pdf_Color est requis. Les classes Zend_Pdf_Color_GrayScale, Zend_Pdf_Color_RGB et Zend_Pdf_Color_CMYK fournissent cette fonctionnalité :
Les différentes couleurs HTML sont aussi fourni avec la classe Zend_Pdf_Color_Html :
Dessiner des formesToutes les opérations de dessins peuvent être réalisées dans le contexte d'une page PDF. La classe Zend_Pdf_Page fournit les outils de dessins :
Dessiner du texteLes opérations de dessins existent bien sûr dans le contexte d'une page PDF. Vous pouvez dessiner une seule ligne de texte à n'importe quel endroit dans la page en fournissant les coordonnées x et y de la ligne de base. La police courant ainsi que sa taille et la couleur de remplissage seront utilisées pour le dessin (voir la description ci-dessous).
Example #1 Dessiner une ligne dans la page
Example #2 Régler la couleur du texte
Par défaut, les chaînes de texte sont interprétées en utilisant l'encodage du système. Si vous avez une chaîne qui utilise un encodage différent (comme les chaînes UTF-8 lues depuis une fichier sur le disque, ou une chaîne MacRoman obtenue depuis une base de données), vous pouvez indiquer l'encodage au moment du dessin et Zend_Pdf gérera la conversion pour vous. Vous pouvez fournir des chaînes dans n'importe quel encodage supporté par la fonction » iconv() de PHP: Example #3 Dessiner une chaîne UTF-8 sur une page
Utiliser des polices de caractèresZend_Pdf_Page::drawText() utilise la police courante ainsi que sa taille, qui sont définies avec la méthode Zend_Pdf_Page::setFont() :
Les documents PDF supportent PostScript Type 1 et les polices TrueType, mais également deux types spécifiques PDF, Type3 et les polices composites. Il y a aussi 14 polices Type 1 standard intégré dans tout lecteur de PDF : Courier (4 styles), Helvetica (4 styles), Times (4 styles), Symbol, et Zapf Dingbats. Zend_Pdf supporte actuellement les 14 polices standard mais également vos propres police TrueType. Les objets de police obtenus via une des deux fabriques méthodes : Zend_Pdf_Font::fontWithName($fontName) pour les 14 polices PDF standard ou Zend_Pdf_Font::fontWithPath($filePath) pour les polices personnalisées. Example #4 Créer une police standard
Les constantes pour les 14 polices standard sont définis dans la classe Zend_Pdf_Font :
Vous pouvez aussi prendre n'importe quelle police TrueType (extension habituelle ".ttf") ou OpenType (".otf") si elles ont une silhouette TrueType. Pour l'instant non supportée, les polices Mac Os X ".dfont" et les collections TrueType Microsoft (".ttc") seront intégrées dans une version future. Pour utiliser une police TrueType, vous devez fournir le chemin de fichier complet vers cette police. Si la police ne peut pas être lue pour une quelconque raison, ou si ce n'est pas une police TrueType, la méthode lèvera une exception : Example #5 Créer une police TrueType
Par défaut, les polices personnalisées seront incorporées dans le document PDF résultant. Cela permet aux destinataires de voir la page comme prévu, même s'ils ne font pas installer les polices appropriées sur leur système. En cas de problème avec la taille du fichier généré, vous pouvez demander que la police ne soit pas incorporé en passant l'option 'ne pas inclure' à la méthode de création : Example #6 Créer une police TrueType sans l'incorporer dans le document PDF
Si les polices ne sont pas incorporées mais que le destinataire du fichier PDF a ces polices installées sur son système, il verra le document comme prévu. Si la police correcte n'est pas installée, l'application de visualisation du PDF fera de son mieux pour synthétiser une police de remplacement. Quelques polices ont les règles de licence très spécifiques qui les empêchent d'être incorporées dans des documents PDF. Donc vous devez faire attention, si vous essayez d'utiliser une police qui ne peut pas être incorporée, la méthode de création lèvera une exception. Vous pouvez toujours utiliser ces polices, mais vous devez passer le paramètre 'ne pas inclure' comme décrit ci-dessous, ou vous pouvez simplement bloquer l'exception : Example #7 Ne pas lever d'exception pour les polices ne pouvant être incorporées
Cette technique de suppression est préférée si vous permettez aux utilisateurs de choisir leurs propres polices. Les polices qui peuvent être incorporées dans le document PDF le seront ; les autres ne le seront pas. Les fichiers de police peuvent être assez grands, certains peuvent atteindre des dizaines de méga-octets. Par défaut, toutes les polices incorporées sont comprimées en utilisant le schéma de compression Flate, ayant pour résultat un gain d'espace de 50% en moyenne. Si, pour une quelconque raison, vous ne voulez pas comprimer la police, vous pouvez le neutraliser avec une option : Example #8 Ne pas compresser une police incorporée
En conclusion, si nécessaire, vous pouvez combiner les options d'incorporation en employant l'opérateur binaire OR : Example #9 Combiner les options de polices incorporées Limitations des polices standard PDFLes polices standard PDF emploient en interne plusieurs encodages sur un seul octet (voir » PDF Reference, Sixth Edition, version 1.7 - Annexe D pour plus de détails). Elles sont généralement avec un jeu de caractère de type Latin1(excepté les polices Symbol and ZapfDingbats). Zend_Pdf utilise l'encodage CP1252 (WinLatin1) pour tracer les textes avec les polices standard. Le texte peut encore être fourni dans n'importe quel autre encodage, qui doit être spécifié s'il diffère de celui en cours. Seulement les caractères WinLatin1 seront tracés réellement. Example #10 Combiner les options de polices embarqués
Extraction des policesDepuis la version 1.5, Zend_Pdf fournit la possibilité d'extraire les polices des documents chargés. Ceci peut être utile lors des mises à jour de document avec ajout de texte. Sans cette fonctionnalité vous devez attacher et probablement intégrer la police dans le document chaque fois que vous voulez le mettre à jour. Les objets Zend_Pdf et Zend_Pdf_Page fournissent une méthode spéciale pour extraire toutes les polices mentionnés à l'intérieur d'un document ou d'une page : Example #11 Extraction de polices à partir d'un document chargé
Example #12 Extraction d'une police à partir d'un document chargé en spécifiant le nom de police
Les polices extraites peuvent être utilisées à la place de n'importe quelle autre police avec les limitations suivantes :
Insertion d'imagesLa classe Zend_Pdf_Page fournis la méthode drawImage() pour dessiner une image :
Les objets Image peuvent être créés avec la méthode Zend_Pdf_Image::imageWithPath($filePath) (les images JPG, PNG et TIFF sont maintenant supportées) : Example #13 Insertion d'images
Important ! Le support JPEG nécessite que l'extension PHP GD soit installé. Important ! Le support PNG nécessite que l'extension ZLIB soit configuré pour accepter les images avec canaux Alpha. Lisez la documentation de PHP pour plus d'informations (» http://www.php.net/manual/fr/ref.image.php et » http://www.php.net/manual/fr/ref.zlib.php). Style de lignesLe style de ligne est définit par l'épaisseur, la couleur et le style de tiret. Tout ces paramètres peuvent être assignés par les méthodes de la classe Zend_Pdf_Page :
Style de remplissageLes méthodes Zend_Pdf_Page::drawRectangle(), Zend_Pdf_Page::drawPoligon(), Zend_Pdf_Page::drawCircle() et Zend_Pdf_Page::drawEllipse() prennent en argument optionnel le type de remplissage: $fillType. Il peut être :
La méthode Zend_Pdf_Page::drawPoligon() prend aussi paramètre supplémentaire $fillMethod :
Transformations linéairesRotationsLa page PDF page peut être tourné avant d'appliquer toute opération de dessin. Ceci peut être fait avec la méthode Zend_Pdf_Page::rotate() :
A partir de Zend Framework 1.8, mise à l'échelleLa mise à l'échelle est fournie par la méthode Zend_Pdf_Page::scale() :
A partir de Zend Framework 1.8, décalageLe décalage du système de coordonnées est réalisé par la méthode Zend_Pdf_Page::translate() :
A partir de Zend Framework 1.8, mise en biaisLa mise en biais de la page peut être réalisé par la méthode Zend_Pdf_Page::skew() :
Sauvegarder et restaurer l'état graphiqueL'état graphique (police courante, taille de caractère, couleur de ligne, couleur de remplissage, style de ligne, sens de la page, zone de dessin) peut-être sauvegarder à tout moment. L'opération de sauvegarde empile le contexte dans une pile de contexte graphique, l'opération de restauration récupère le contexte depuis la pile. Il y a deux méthodes dans la classe Zend_Pdf_Page pour réaliser ces opérations :
Zone de dessinLe format PDF et le module Zend_Pdf supporte le découpage de la zone de dessin. La zone de dessin courante limite la zone de la page affectée par l'utilisation des opérateurs de dessins. Initialement c'est toute la page. La classe Zend_Pdf_Page fournit des méthodes pour les opérations de découpage.
StylesLa classe Zend_Pdf_Style fournit les fonctionnalités de style. Les styles peuvent être utilisés pour stocker des paramètre d'état graphique et de les appliquer à une page PDF en une seule opération :
La classe Zend_Pdf_Style fournit des méthodes pour choisir ou récupérer différents paramètres de l'état graphique :
TransparenceLe module Zend_Pdf supporte la gestion de la transparence. La transparence peut être paramétré en utilisant la méthode Zend_Pdf_Page::setAlpha() :
|
|