Accueil > Documentation > Les balises XPX > PDF

PDF

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.

<pdf file="..." [font="..."]>

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.

<pdf name="...">

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.

<pdf close="...">

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">

<pdf addpage="...">

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">

<pdf frame="...">

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".

<pdf rect="...">

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.

<pdf round="...">

Vous pouvez arrondir les angles de vos rectangles avec l'attribut round="x,y".

<pdf rotate="...">

Vous pouvez faire pivoter vos rectangles avec l'attribut rotate="α" (unité en degré).

<pdf border="...">

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.

<pdf line="x,y,width,height">

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.

<pdf color="...">

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".

<pdf bgcolor="...">

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">

<pdf text="...">

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".

<pdf href="...">

Vous pouvez faire un lien cliquable sur un texte en précisant dans l'attribut "href" l'URL de votre cible.

<pdf path="...">

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.

<pdf font="...">

Méthode 1

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 :

  • "Helvetica"
  • "Times"
  • "Courier"
  • "Symbol"
  • "ZapfDingbats"

NB :

  • Sous Unix, pour que le XPX calcule correctement les tailles des mots, vous devez avoir installé a2ps sur le serveur. Ou plus simplement avoir un dossier: /usr/share/a2ps/afm/ qui contient les fichiers .afm et le fichier fonts.map.

  • Sous Windows, il suffit de copier un répertoire afm venant d'un Unix dans le même répertoire que l'éxécutable XPX.

  • Dans le cas où des metadata ont été ajoutés, les polices chargées ensuite seront forcément incorporées (embedded). Dans ce cas, les largeurs des caractères seront tirées de la définition de la police (ces polices standard doivent figurer dans cgi-bin/fonts/std). Cette fonctionnalité est présente depuis la version 4.0a19 (4001902)

Méthode 2

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).

<pdf size="...">

Vous pouvez changer la taille de vos caractères avec l'attribut «size="taille"».

<pdf leading="...">

L'attribut leading="num" permet de régler l'interligne de vos paragraphes.
La valeur par défaut est 2.

<pdf padding="...">

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.

<pdf style="...">

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").

<pdf align="...">

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">

<pdf getx="..." gety="...">

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

<PDF mode="[clip | noclip | pagebreak]" [gettext="nomvar"]>

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.

<pdf calc="$width$" text="$text$" gety="y">

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.

<pdf pagesize="width,height">

L'atttibut pagesize permet de définir la taille de la page en pixels (par défaut A4 portrait : width=595px et height=841px).

<pdf metadata="...">

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...

<pdf embcontent="..." | embpath="..." [ embdesc="..."] [embname="..."] [embtype="..."]

Ces attributs permettent d'incorporer (embed) le contenu d'un fichier dans le PDF :

  • embcontent : contenu du fichier à incorporer,
  • embpath : chemin du fichier à incorporer,
  • ebmdesc : descriptif du fichier (texte libre),
  • embname : nom du fichier incorporé qui apparaîtra dans l'onglet d'Adobe Reader (défaut : factur-x.xml),
  • embtype : type MIME du fichier incorporé (défaut : text/xml).

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écharger

Téléchargez rapidement la dernière version du XPX: Version 3.8-rc16 - 05/02/2019

Le saviez vous ?

Résultat :

FAQ

Venez nous poser vos questions et voir les problèmes courants que vous pouvez rencontrer

Don

Aidez-nous à faire vivre ce site en faisant un don

Condition d'utilisation