PDF Maker : Utilisation des fonctions de dessin
Introduction
Ce deuxième article qui s’articule autour du
graphisme s’attachera à expliquer comment le dialecte Pdf-Maker permet, par
exemple, le dessin d’une ligne, d’un rectangle, d’un cercle ainsi que
l’incorporation et la transformation d’images.
Dessiner une ligne :
Pour dessiner une ligne il suffit d’utiliser
l’expression suivante :
Line x1 y1 x2 y2
Dans l’expression précédente, x1 et y1 sont les
coordonnées du point X1 de départ et x2 et y2 les coordonnées du point X2
d’arrivée. N’oubliez pas que l’origine se situe dans le coin inférieur gauche
de la page.
Voici un exemple simple qui permet de tracer des
lignes verticales et horizontales :
REBOL [
Title: "Exemple n°10"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
;
GENERATION DU PDF exemple10.pdf
;-------------------------------------------------------------------------------
write/binary
%exemple10.pdf layout-pdf [
[ ; PAGE 1
; LIGNE VERTICALE ALLANT DU POINT
X1(10,10) AU POINT X2(10,281)
line 10 10 10 281
; LIGNE HORIZONTALE ALLANT DU POINT
X1(10,281) AU POINT X2(201,281)
line 10 281 201 281
; LIGNE VERTICALE ALLANT DU POINT
X1(201,281) AU POINT X2(201,10)
line
201 281 201 10
; LIGNE HORIZONTALE ALLANT DU POINT
X1(201,10) AU POINT X2(10,10)
line 201 10 10 10
]
]
L’exemple ci-dessus montre les tracés de simples
lignes. Pdf-Maker permet de modifier l’apparence de ces lignes c’est à
dire : leurs épaisseur, leurs terminaisons, leurs styles (tirets) ainsi
que leurs couleurs.
Modifier l’épaisseur d’une ligne :
L’expression line width e suivi de l’expression line
x1 y1 x2 y2 permet de modifier l’épaisseur d’une ligne. A noter que e
représente, en mm, l’épaisseur du trait.
L’exemple suivant dessine 4 traits avec différentes
épaisseurs :
REBOL [
Title: "Exemple n°11"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
;
GENERATION DU PDF exemple11.pdf
;-------------------------------------------------------------------------------
write/binary
%exemple11.pdf layout-pdf [
[ ; PAGE 1
; LIGNE EPAISSE DE 0.25MM ALLANT DU
POINT X1(10,10) AU POINT X2(10,281)
line width 0.25
line 10 10 10 281
; LIGNE EPAISSE DE 0.5MM ALLANT DU POINT
X1(10,281) AU POINT X2(201,281)
line width 0.5
line 10 281 201 281
; LIGNE EPAISSE DE 0.75MM ALLANT DU POINT
X1(201,281) AU POINT X2(201,10)
line width 0.75
line 201 281 201 10
; LIGNE EPAISSE DE 1MM ALLANT DU POINT
X1(201,10) AU POINT X2(10,10)
line width 1
line 201 10 10 10
]
]
REMARQUE :
0 est la plus petite
épaisseur pouvant être choisie.
Modifier les terminaisons d’une ligne :
« line cap »
L’expression line cap suivi de ses options de terminaisons :
butt, round ou square permet de tracer une ligne avec différentes terminaisons
expliquées ci-dessous :
Voici, par l’exemple, les différentes terminaisons
que peut prendre une ligne :
REBOL [
Title: "Exemple n°12"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
;
GENERATION DU PDF exemple12.pdf
;-------------------------------------------------------------------------------
write/binary
%exemple12.pdf layout-pdf [
[ ; PAGE 1
page size 50 20
line width 2
; LIGNE AVEC TERMINAISON RONDE
line cap round
line 20 15 45 15
; LIGNE AVEC TERMINAISON CARRE
line cap square
line 20 10 45 10
; LIGNE AVEC TERMINAISON PAR DEFAUT
line cap butt
line 20 5 45 5
]
]

IMPORTANT :
Si vous avez choisi une option de tracé de ligne,
par exemple la terminaison ronde (line cap round) et que vous désirez, sur la
même page, dessiner une autre ligne
avec une épaisseur différente alors attention :
votre ligne nouvellement construite gardera la propriété (round) du paramètre
de terminaison (cap). Cette remarque est généralisable pour l’ensemble des mots
de Pdf-Maker.
« line dash »
L’expression suivante : line dash suivi des options
suivantes :
|
solid |
|
[x] z |
|
[x y] z |
|
[x1 y1 x2 y2] z |
|
[x1 y1 x2 y2 … xn yn] z |
F line dash solid permet de
dessiner un trait plein. C’est l’option qu’il faut choisir pour revenir d’une
ligne avec tiret à une ligne sans tirets.
F line dash [x] z permet
d’obtenir une ligne avec une suite de tirets pleins de x mm et de tirets creux
(espacement entre les tirets) de x mm ; z constitue, en mm, un décalage à
gauche dans la phase des tirets
REMARQUE :
Si z est négatif alors le
décalage ne se fait plus vers la gauche mais vers la droite.
F line dash [x y] z permet de
tracer une ligne avec des tirets pleins de x mm et des tirets creux de y
mm ; z constitue, en mm, un décalage à gauche dans la phase des tirets.
F line dash [x1 y1 x2 y2] z
permet de dessiner des lignes avec tirets de x1 mm, suivi d’un écart de y1 mm,
suivi d’un tiret de x2 mm et d’un écart de y2 mm avec z constituant, en mm, le
décalage vers la gauche dans la phase des tirets.
F line dash [x1 y1 x2 y2 … xn
yn] z : en fait, line dash est suivi d’un bloc de N nombres indiquant,
alternativement, la distance (en mm) du trait et la distance (en mm) de
l’écart. Il faut que N soit un nombre pair. Quant à z, il indique toujours, en
mm, le décalage vers la gauche des phases de tirets.
L’exemple suivant permettra de se familiariser avec
les tirets :
REBOL [
Title: "Exemple n°13"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
;
GENERATION DU PDF exemple13.pdf
;-------------------------------------------------------------------------------
write/binary
%exemple13.pdf layout-pdf [
[ ; PAGE 1
page size 50 5
line width 0.5
; LIGNE AVEC TIRETS DE 2MM ET ECART
DE 1MM SANS DECALAGE
line dash [2 1] 0
line 5 4 45 4
; LIGNE AVEC TIRETS DE 2MM ET ECART DE 1MM
AVEC DECALAGE DE 1MM VERS LA GAUCHE
line dash [2 1] 1
line 5 3 45 3
; LIGNE AVEC TIRETS DE 2MM ET ECART DE 1MM
AVEC DECALAGE DE 1MM VERS LA DROITE
line dash [2 1] -1
line 5 2 45 2
]
]

Coloriser une ligne :
« line color »
Il est aussi possible avec Pdf-Maker de coloriser
une ligne grâce à l’expression line color.
Le mot line color suivi du tuple RGB permet
d’affecter, à une ligne, une couleur définie. Voici un exemple simple de
colorisation d’une ligne :
REBOL [
Title: "Exemple n°14"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
;
GENERATION DU PDF exemple14.pdf
;-------------------------------------------------------------------------------
write/binary
%exemple14.pdf layout-pdf [
[ ; PAGE 1
page size 50 5
line width 2
; LIGNE AVEC COULEUR ROUGE
line color 255.0.0
line 5 3 19 3
; SUITE DE LA LIGNE AVEC COULEUR VERTE
line color 0.255.0
line 19 3 33 3
; SUITE DE LA LIGNE AVEC COULEUR BLEUE
line color 0.0.255
line 33 3 45 3
]
]

Dessiner un rectangle ou un carré :
Rectangle ou Carré transparent :
« box »
La syntaxe suivante permet de créer un rectangle ou
carré transparent :
box X Y L H
Dans l’expression précédente X et Y sont
respectivement les coordonnées du point en bas et à gauche de la forme
géométrique par rapport à l’origine (pour rappel : point en bas et à
gauche de la page PDF).
L et H représentent respectivement la hauteur et la
largeur du rectangle ou du carré (si L = H)
Rectangle ou Carré colorisé :
« solid box »
La
syntaxe ci-après permet de construire un rectangle ou carré colorisé :
solid
box X Y L H
X,
Y, L et H ont la même signification que pour le mot « box ».Le noir
est la couleur de remplissage, par défaut, du rectangle ou du carré créé grace
à « solid box ».
Pour
modifier cette couleur, il suffit d’utiliser « solid box color »
suivi immédiatement du tuple RGB permettant de définir une couleur.
REMARQUE :
Le mot « line » utilisé juste avant les
mots « box » ou « solid box » permet de définir le contour
du rectangle ou du carré dessiné.
Cette remarque est aussi valable pour le dessin du
contour des cercles et des formes géométriques quelconques (sauf pour le mot
« fill ») que nous aborderons par la suite.
REBOL [
Title: "Exemple
n°15"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
; GENERATION DU
PDF exemple15.pdf
;-------------------------------------------------------------------------------
write/binary %exemple15.pdf layout-pdf [
[ ; PAGE 1
page size 100 30
line width 0.5
line
color 0.255.0
; RECTANGLE DE 20X10 DE LONG AVEC CONTOUR
VERT
box 5 10 20 10
line
color 255.0.0
; CARRE DE 10MM DE COTE AVEC CONTOUR ROUGE ET
FOND NOIR
solid box 45 10 10 10
;
RECTANGLE DE 20X10mm DE LONG AVEC CONTOUR ROUGE ET FOND VERT
solid box color
0.255.0 75 10 20 10
]
]

Dessiner un cercle :
Cercle transparent :
« circle »
La syntaxe suivante permet de créer un cercle
transparent :
Circle X Y R
Dans l’expression précédente X et Y représentent les
coordonnées du centre du cercle.
R représente la dimension du rayon.
Cercle colorisé :
« solid box
La
syntaxe ci-après permet de construire un cercle colorisé :
solid
circle X Y R
X,
Y et R ont la même signification que pour le mot « circle ».Le noir
est la couleur de remplissage, par défaut.
Pour
modifier cette couleur, il suffit d’utiliser « solid circle color »
suivi immédiatement du tuple RGB permettant de définir une couleur.
REBOL [
Title:
"Exemple n°16"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
; GENERATION DU
PDF exemple16.pdf
;-------------------------------------------------------------------------------
write/binary %exemple16.pdf layout-pdf [
[ ; PAGE 1
page size 100 30
line width 0.3
line
color 255.0.0
; CERCLE DE 14MM DE RAYON AVEC CONTOUR ROUGE
ET FOND VERT
solid circle color
0.255.0 50 15 14
; CERCLE DE 12MM DE RAYON AVEC CONTOUR ROUGE
ET FOND NOIR
solid circle color
0.0.0 50 15 12
line color 0.255.0
; CERCLE DE 10MM DE RAYON AVEC
CONTOUR VERT ET FOND BLANC
solid circle color
255.255.255 50 15 10
]
]

Dessiner des formes géométriques quelconques
Forme géométrique transparente :
« stroke »
La
syntaxe :
Stroke
[X1 Y1 X2 Y2 X3 Y3 … Xn Yn]
permet
de relier les point de coordonnées (X1,Y1) ; (X2,Y2) ; (X3,Y3) et …
(Xn,Yn)
REMARQUE :
Le mot « stroke » sera apprécié pour son
utilité dans la création de graphiques.
Forme
géométrique colorisée
« fill »
La
syntaxe :
fill
[X1 Y1 X2 Y2 X3 Y3 … Xn Yn]
permet
de remplir la forme géométrique avec la couleur noire (couleur par défaut).
Pour modifier la couleur par défaut, il vous suffit de faire suivre
immédiatement après le mot « fill » : « color » et son
tuple RGB.
REMARQUE :
Pour remplir une forme géométrique , il faut
que cette dernière soit fermée. Le mot « fill » issue du dialecte
Pdf-Maker ferme automatiquement la forme géométrique c’est à dire qu’il relie
les coordonnées du dernier point (Xn,Yn) aux coordonnées du premier (X1,Y1)
« paint »
La
syntaxe suivante :
paint
[X1 Y1 X2 Y2 X3 Y3 … Xn Yn]
« paint »
est à la fois « stroke » et « fill » c’est à dire
qu’il dessine la forme comme pour « stroke » et la remplie comme le
fait « fill »
REBOL [
Title:
"Exemple n°17"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
; GENERATION DU
PDF exemple17.pdf
;-------------------------------------------------------------------------------
write/binary %exemple17.pdf layout-pdf [
[ ; PAGE 1
page size 30 30
line width 0.2
line
color 0.255.0
; GRAPHIQUE VERT
stroke [0 0 5 20 10 15 15 25 20 10]
line color 255.0.0
;
GRAPHIQUE ROUGE
stroke [0 20 5 18 10 10 15 5 20 5]
]
]

« image »
Pdf-Maker
permet d’insérer dans vos documents PDF des images aux formats .bmp .gif .jpg
et .png..
Il
existe deux manières d’insérer une image :
F
La
première qui consiste à appeler directement le fichier aura la syntaxe
suivante :
image
X Y L H %image1.jpg
où
(X,Y) correspondent aux coordonnées du coin inférieur gauche de l’image par
rapport à l’origine, L la longueur de l’image et H la hauteur.
F
La
seconde qui consiste à charger l’image avant de l’appeler aura la syntaxe
suivante :
image1 : load %image1.jpg
image
X Y L H image1
L’exemple
suivant montre les deux manières d’insérer des images :
REBOL [
Title:
"Exemple n°18"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
; GENERATION DU
PDF exemple18.pdf
;-------------------------------------------------------------------------------
image2: load %MonImage2.jpg
write/binary %exemple18.pdf layout-pdf [
[ ; PAGE 1
image 25 200 63 43 %MonImage1.jpg
image 115 200 63 43 image2
]
]

Appliquer
une rotation à l’image
« image
rotated »
La
syntaxe suivante permet d’appliquer une rotation d’angle A à l’image :
image X Y L H rotated A %image1.jpg
X,Y,L
et H sont les mêmes paramètres que pour l’insertion d’image.
A
constitue l’angle de rotation en degrés.
REMARQUE :
Si vous affectez à A une valeur négative alors la
rotation s’effectue dans l’autre sens (voir l’exemple suivant)
REBOL [
Title:
"Exemple n°19"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
; GENERATION DU
PDF exemple19.pdf
;-------------------------------------------------------------------------------
image2: load %MonImage2.jpg
write/binary %exemple19.pdf layout-pdf [
[ ; PAGE 1
; ROTATION DE 20° DANS LE SENS
POSITIF
image 25 200 63 43
rotated 20 %MonImage1.jpg
; ROTATION DE 20° DANS LE SENS NEGATIF
image 115 200 63 43
rotated -20 image2
]
]

Transformation
oblique d’une image :
« image
skew »
En
appliquant la syntaxe suivante :
image
X Y L H skew Ax Ay
vous
appliquerez une transformation, point par point, d’un angle Ax (en degrés) par
rapport à l’axe des abscisses et d’un angle Ay par rapport à l’axe des
ordonnées.
REMARQUE :
Si vous affectez 0 à Ay et un chiffre différent de 0
à Ax alors la transformation aura lieu uniquement par rapport à l’axe des
abscisses. A l’inverse, si vous affectez 0 à Ax et un chiffre différent de 0 à
Ay alors la transformation aura lieu uniquement par rapport à l’axe des
ordonnées. L’exemple ci-après vous permettra de faire le point à ce sujet.
REBOL [
Title:
"Exemple n°20"
]
do %pdf-maker.r
;-------------------------------------------------------------------------------
; GENERATION DU
PDF exemple20.pdf
;-------------------------------------------------------------------------------
write/binary %exemple20.pdf layout-pdf [
[ ; PAGE 1
; TRANSFORMATION OBLIQUE DE 20° PAR
RAPPORT A L'AXE DES ABSCISSES
image 25 220 63 43 skew 20 0
%MonImage1.jpg
; TRANSFORMATION OBLIQUE DE 20° PAR
RAPPORT A L'AXE DES ORDONNEES
image 25 175 63 43 skew 0 20
%MonImage1.jpg
; TRANSFORMATION OBLIQUE DE 20° PAR
RAPPORT A L'AXE DES ABSCISSES
; ET DE 20° PAR RAPPORT A L'AXE DES
ORDONNEES
image 100 220 63 43 skew 20 20
%MonImage1.jpg
]
]

Conclusion
Ce
deuxième article a permis de faire le point sur les éléments graphiques du
dialecte Pdf-Maker. L’article suivant vous permettra d’acquérir des notions
avancées sur l’ensemble des text box, images et formes géométriques ainsi
que sur la composition dynamique d’un fichier PDF
Benoit Delannoy