Vous pouvez créer des PDF avec le xpx, pour cela, il faut utiliser la balise générale <pdf> et utiliser les différents attributs en fonction de ce que vous voulez faire.
Notez que le pdf est à la base un document A4 de 72 dpi (soit 841px par 595px), que les unités sont en pixel, et que tout style apporté (style, color ...) est appliqué jusqu'à une contre-indication.
L'attribut file="chemin d'accès", permet de déclarer un nouveau document pdf, en précisant son emplacement lors de sa création. La déclaration d'un pdf nécessite également l'utilisation de l'attribut "name".
L'attribut font="..." permet de charger la police désignée dès la création du fichier. Elle sera alors automatiquement incorporée (embedded) comme nécessaire pour les fichiers PDF/A. Cette fonctionnalité est présente depuis la version 4.0a19 (4001902).
<pdf file="documents/documentation.pdf" name="docPDF">
Création d'un pdf dont le chemin est documents/documentation.pdf
(relativement à DOCUMENT_ROOT) et qui sera identifié sous le nom docPDF.
L'attribut name="nom_du_pdf", permet de donner un nom, lors de la création du pdf, puis de préciser sur les autres commandes sur quel document pdf vous travaillez (rect, close, page).
Une action effectuée sur un pdf avec l'attribut name ne sera effectuée que sur la page actuellement en cours d'écriture.
L'attribut close="nom_du_pdf", indique que vous avez terminé les modifications apportées au document. Le pdf est alors fermé et le fichier enregistré.
<pdf close="docPDF">
L'attribut addpage="nom_du_pdf", permet d'ajouter une page à votre document. Autrement, tout votre contenu est écrit sur la même page, même si cette dernière est trop petite pour tout contenir.
<pdf addpage="docPDF">
Pour les actions d'ajout de contenu, vous avez le choix de déclarer que le contenu est visible uniquement sur la page en cours d'écriture, en utilisant l'attribut "name" vu précédement.
Vous pouvez également choisir de l'afficher sur toutes les pages de votre document. Pour cela, utiliser l'attribut frame="nom_du_document", à la place de l'attribut "name".
La forme de base utilisée dans le document pdf est le rectangle, il vous permet de créer une zone colorée (avec ou sans bordure), mais également de déclarer une zone de texte.
Pour tracer un rectangle, il faut préciser quatre éléments. On les écrit dans l'odre qui suit: coordonnée en abscisse de l'angle supérieur gauche du rectangle, coordonnée en ordonnée de l'angle supérieur gauche du rectangle, largeur du rectangle, hauteur du rectangle.
Vous pouvez arrondir les angles de vos rectangles avec l'attribut round="x,y".
Vous pouvez faire pivoter vos rectangles avec l'attribut rotate="α" (unité en degré).
L'attribut "border" permet d'ajouter une bordure à vos rectangles, elle a la même couleur que le texte éventuellement contenu dans le rectangle. L'attribut prend pour valeur un entier naturel.
Pour tracer une ligne, il faut préciser quatre éléments. On les écrit dans l'odre qui suit: coordonnées en abscisse et en ordonnée du point de départ, déplacement en absicsse et ordonnée par rapport au point de départ.
<pdf line="10,15,0,100">
Pour tracer une ligne verticale de 100 pixels partant du point 10,15.
L'attribut "color" permet de changer la couleur du texte ou de la bordure d'un rectangle. Il prend pour valeur soit un code couleur html du type #FFFFFF, soit le nom d'une couleur clef comme "black".
L'attribut "bgcolor" fonctionne de la même manière que l'attribut "color", mais donne la couleur au fond du rectangle.
<pdf name"docPDF" rect="$X$, $Y$, $L$, $H$" color="red" bgcolor="#5acf13" border="1" rotate="30" round="5,5">
Pour placer du texte dans vos pdf, vous devez d'abord déclarer un rectangle qui formera votre zone de texte, puis placer le contenu textuel dans l'attribut "text".
Vous pouvez faire un lien cliquable sur un texte en précisant dans l'attribut "href" l'URL de votre cible.
Pour placer une image dans vos pdf, vous devez d'abord déclarer un rectangle qui formera la zone de l'image, puis placer le chemin de l'image dans l'attribut "path".
Les formats d'images acceptés sont : GIF, JPG et PNG.
Pour le PNG, si on a de la transparence, elle doit être de couleur blanche pour que cela fonctionne.
Vous pouvez choisir la police d'écriture de votre pdf, en précisant le nom de la police dans l'attribut "font".
Si rien n'est précisé, la police par défaut est "Helvetica".
Les polices PDF utilisables en standard sont :
NB :
Vous pouvez aussi utiliser des fontes TTF stockées sur le serveur. Le chemin est en relatif par rapport au dossier cgi-bin.
Par exemple:
<pdf name="doc" font="../fonts/verdana.ttf">
si le dossier fonts est au même niveau que le cgi-bin.
La police TTF sera alors incorporée dans le PDF ce qui augmentera sa portabilité (et sa taille).
Vous pouvez changer la taille de vos caractères avec l'attribut «size="taille"».
L'attribut leading="num" permet de régler l'interligne de vos paragraphes.
La valeur par défaut est 2.
Vous pouvez régler l'espacement entre le bord du rectangle et son contenu avec l'attribut "padding". Il prend pour valeur successive : espace à gauche, espace en haut, espace à droite, espace en bas.
<pdf name"docPDF" rect="20, 20, 200, 13" padding="5 3 4 1" text="Essai">
Dans cet exemple, le texte aura 5 pixels libres à gauche, 3 en haut, 4 à droite et 1 en bas.
Vous pouvez changer le style de votre texte avec l'attribut "style". Il prend pour valeur "b" pour un texte en gras, "u" pour un texte souligné, et "i" pour un texte en italique. Pour un texte «normal», la valeur est "n". On peut donner plusieurs valeurs séparées par des virgules (exemple style="b,u").
Vous pouvez choisir l'allignement de votre texte dans le rectangle avec l'attribut "align". Il prend pour valeur "left", "center" ou "right".
<pdf rect="0,0,500,400" text="$texte$" href="www.xpx-technologies.net" size="12" font="arial" leading="12" style="n" align="left">
Vous pouvez récupérer la valeur des coordonnées de l'angle inférieur droit de votre rectangle grâce aux attributs "getx" et "gety", ceci dans le but d'aider à la mise en place des éléments.
Pour ce faire, il faut préciser un nom de variable dans l'attribut qui prendra alors la valeur recherchée.
<pdf rect="0,0,500,400" getx="varX" gety="varY">
Dans cet exemple simple, la variable varX vaudra 500 et varY vaudra 400
Le mode "clip" est le mode par défaut.
Mode clip : Quand on veut écrire du texte dans un rectangle, le texte qui ne peut pas rentrer dans le rectangle n'est pas affiché. Cela évite les débordements quand on a une place limitée sur le document. Le texte qui n'a pas été écrit peut être récupéré avec l'attribut GETTEXT="nomvar". La variable $nomvar$ contient alors la suite du texte.
Mode noclip: Le texte continue a s'afficher même si il ne rentre pas dans le rectangle. La hauteur du rectangle devient dont inutile.
Mode pagebreak: Quand le texte atteind le bas du rectangle, un saut de page est automatiquement fait et le texte continue sur la page suivante.
Calcule la hauteur d'un texte text s'il était écrit dans une colonne de largeur calc. Le gety permet de récupérer la coordonnée verticale de la fin du texte.
L'atttibut pagesize permet de définir la taille de la page en pixels (par défaut A4 portrait : width=595px et height=841px).
L'attribut metadata permet d'ajouter un XML contenant les metadata du fichier PDF. Le contenu de ce fichier XML est défini par XMP (voir ici). Cette fonctionnalité est présente depuis la version 4.0a19 (4001902) et permet notamment la création de fichiers Factur-X.
Voir aussi : embcontent, embpath...
Ces attributs permettent d'incorporer (embed) le contenu d'un fichier dans le PDF :
Cette fonctionnalité est présente depuis la version 4.0a19 (4001902) et permet notamment la création de fichiers Factur-X.
<pdf df name="docPDF" embcontent="$xmlFactureX$"
embdesc="Factur-X N°13764" embname="factur-x.xml" embtype="text/xml">
Création d'un fichier incorporé de type Factur-X
<pdf df name="docPDF" embpath="/images/logo.jpg"
embdesc="Mon beau logo" embname="logo.jpg" embtype="image/jpeg">
Création d'un fichier incorporé de type image à partir d'un fichier
Téléchargez rapidement la dernière version du XPX: Version 3.8-rc16 - 05/02/2019
Venez nous poser vos questions et voir les problèmes courants que vous pouvez rencontrer
Aidez-nous à faire vivre ce site en faisant un don