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()
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 :
- Créer un objet PDFL loDocument=evaluate([XFRX("PDFL#INIT")])
- L'attacher à une session existante de XFRX : loDocument.attachToPDFDocument(loXFRXSession)
- 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
- 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)
- Toutes les fois que vous ajoutez du texte depuis un
script, appelez la méthode
oPDFLDocument.manageText() à la fin du script.
- 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.
|