XFRX.FR
Produits Contacts Divers

Manuel PDF Library

La librairie "PDF Library" est maintenant incluse dans XFRX et n'est plus distribuée séparément


Installation

Dé-zipper le fichier archive zip. Pour un aperçu rapide des possibilités lancez DEMOPDFL.PRG.
PDFL est composé de 3 fichiers :

  • XFRX.APP - C'est l'application XFRX  et PDFL
  • HNDLIB.DLL - Cette librairie doit être dans le même répertoire que XFRX.APP
  • ZLIB.DLL - Utilitaire de compression "freeware" (voir www.zlib.org pour plus d'information)

Utilisation de PDFL

Commencez par créer un objet PDFL : loDocument=evaluate([XFRX("PDFL#INIT")])

 

Si vous voulez utiliser PDFL avec XFRX pour mélanger des rapports de VFP avec des pages produites par votre code PDFL, employez la méthode AttachToPDFDocument() de l'objet XFRXSession pour rattacher au document existant.

 

Passez l'objet XFRXSession comme paramètre :

loDocument.attachToPDFDocument(loXFRXSession)

 

Si vous voulez utiliser PDFL indépendamment, appelez la méthode createDocument avec en paramètre :  le nom du fichier PDF à créer :

loDocument.createDocument("output.pdf")

 

Appelez la méthode newPage() au départ et la méthode endPage() à la fin de chaque page.
La méthode NewPage() doit être appelée avant d'ajouter n'importe quel objet.

 

Si vous utilisez PDFL indépendamment, appeler la méthode finishDocument() pour fermer le document :

loDocument.finishDocument()

 

Ne jamais appeler la méthode finishDocument() quand vous utilisez PDFL avec XFRX.

Les méthodes de la classe PDFL

Structure du Document

 createDocument(tcFileName)

     Créer un nouveau document PDF, le paramètre est le nom du fichier à créer.
Si le fichier ne peut pas être créé, -1 est retourné, autrement 0 est retourné.

 newPage(tnWidth, tnHeight)

     Ajouter une nouvelle page de largeur tnWidth et de hauteur tnHeight, au document.

 newPage(tcPaperSize)

     Alternativement, vous pouvez définir la taille par la taille du papier en donnant "A4" or "letter" comme paramètre.
"letter" est la valeur par défaut.

 endPage()

     Termine la page en cours.
Chaque page doit être finie avant que le document puisse être fini.

 finishDocument()

     Termine la création du document.
Le fichier PDF est créé.


Contenu du Document

   Réglage des couleurs

 setForeColor(tnRed, tnGreen, tnBlue)

     Définit la couleur de premier plan.

 setBackColor(tnRed, tnGreen, tnBlue)

     Définit la couleur de fond.

 setColor(tnForeRed, tnForeGreen, tnForeBlue, tnBackRed, tnBackGreen, tnBackBlue)

     Définit la couleur de premier plan et la couleur de fond.
(Valeurs RVB 0-255)


   Ajouter du texte

 setFont(tcFontName, tnFontSize, tlBold, tlItalic)

     Définit la police de caractères à utiliser.

 setPos(tnXpos, tnYpos)

     Définit la position d'écriture

 outText(tcText)

     Afficher le texte passé en paramètre.
La position d'écriture se déplace sur le droite en conséquence.

 newLine()

     Place la position d'écriture sur la ligne suivante


   Formes de Bases

 addLine(tnXPos1, tnYPos1, tnXPos2, tnYPos2, tnLineWidth, lnPattern)

     Dessiner une ligne de [tnXPos1, tnYPos1] à [tnXPos2, tnYPos2].
Le paramètre "inLineWidth" défini la largeur en pixel.
Le paramètre "lnPattern" défini le modèle de trait :
  1 ... pointillé
  2 ... tiret
  3 ... tiret-point
  4 ... tiret-point-point

 addBox(tnXPos, tnYPos, tnWidth, tnHeight, tnLineWidth, tnFill, tnPenPattern, tnRoundFactor)

     Dessiner une rectangle de position [tnXPos, tyYpos], le largeur [tnWidth] et de hauteur [tnHeight].
tnFill:
  0 ... pas rempli
  1 ... rempli
tnPenPattern:
  0 ... pas de bord
  1 ... pointillé
  2 ... tiret
  3 ... tiret-point
  4 ... tiret-point-point
tnRoundFactor:
  0 ... pas d'arrondi. Plus la valeur est élevée, plus les coins sont arrondis. 99 affiche une ellipse.


   Utilisation de dessin en tracé

 startPath(tnXPos, tnYpos)

     Débute un nouveau tracé à [tnXpos, tnYpos]

 appendLine(tnXpos, tnYpos)

     Ajoute une ligne droite du point courant à [tnXpos, tnYpos]

 appendBezier(tnXpos1, tnYpos1, tnXpos2, tnYpos2, tnXpos3, tnYpos3)

     Ajoute une courbe de Bézier du point courant à [tnXpos3, tnYpos3], utilisant [tnXpos1, tnYpos1] et [tnXpos2, tnYpos2] comme points de contrôle de Bézier.

 closePath()

     Termine un tracé par l'ajout d'une ligne droite du point courant au point de départ du tracé.

 stroke()

     Dessine le contour du tracé d'une courbe de Bézier.

 fill()

     Remplit le tracé.

 strokeandfill()

     Dessine le contour et remplit le tracé.


Ajouter des images

 addPicture(tcFileName, tnXpos, tnYpos, tnWidth, tnHeight, tnAdjType)

     Ajouter une image d'un fichier. Seuls les formats BMP and JPG sont supportés.
tnAdjType:
  1 ... stretch picture, retain shape
  2 ... stretch picture, fill frame

Modifier des pages générées par XFRX

Vous pouvez employer la PDL Library pour ajouter tous les graphiques souhaités (par exemple des filigranes) et/ou du texte aux pages produites par XFRX. Vous pouvez également ajouter de nouvelles pages entre les pages de rapport.
Pour faire cela, vous devez créer des procédures avec des commandes PDFL (PDFL scripts) et indiquer à XFRX quand il doit appeler ces procédures :
  1. Créer un objet PDFL loDocument=evaluate([XFRX("PDFL#INIT")])
  2. L'attacher à une session existante de XFRX : loDocument.attachToPDFDocument(loXFRXSession)
  3. Créer une instance de classe de PDFLScripts. Employer l'objet PDFL comme paramètre de la méthode init.
    Le reste des méthodes de la classe sont les scripts PDFL.

    loScr = createobject("PDFLScripts",loDocument)

    La définition d'une classe avec un script simple ressemble à cela :

    define class PDFLScripts as custom oPDFLDocument = null procedure init lpara toPDFLDocument this.oPDFLDocument = toPDFLDocument endproc procedure script1 this.oPDFLDocument.addPicture("xfrx.jpg",10,673,300,500,2) endproc enddef

  4. Maintenant nous devons dire à XFRX quand (à quelles pages) il doit appeler le script.
    Pour chaque script, appeler la méthode loXFRXSession.registerPDFLScript() :
    loXFRXSession.registerPDFLScript(toScriptObject, tcMethodName, tnZIndex, tcScope, tnPageNumberingType)
    toScriptObject La référence à l'objet PDFLScripts
    tcMethodName Le nom de la méthode contenant le script
    tnZIndex 0 ... imprimer avant la page du rapport,
    1 ... imprimer après la page du rapport
    tcScope Définit quelles pages activent le script.
    Peut contenir :
    "ALL" (toutes),
    "ODD" (page impaire),
    "EVEN" (page paire)
    ou des numéros de pages délimités par des virgules,
    on peut même utiliser des plages de pages délimitées avec un trait d'union.
    Exemples: "ODD", "1,5-19", "ODD,4,8"
    tnPageNumberingType Comment XFRX doit déterminer le numéro de page :
    0 ... absolu - le numéro de page du document,
    1 ... relatif - le numéro de page du rapport courant,
    2 ... la valeur de _PAGENO

    Exemple:

    loXFRXSession.registerPDFLScript(loScr,"script1",0,"ALL",0)

  5. Toutes les fois que vous ajoutez du texte depuis un script, appelez la méthode oPDFLDocument.manageText() à la fin du script.
  6. Vous pouvez ajouter autant de scripts que vous en avez besoin. Pour supprimer tout les scripts enregistrés appelez : loXFRXSession.unregisterAllPDFLScripts()
Veuillez vous reporter à l'application livrée avec XFRX pour un exemple complet.
Reproduction totale ou partielle strictement interdite • KitWebWan AgainDesign or DeclineValid XHTML 1.0 Transitional