III. Utilisation avancée▲
III-A. Insérer un graphique▲
Nous allons voir ici comment dessiner des droites en couleur dans un repère orthonormé avec un titre, une légende, l'affichage des abscisses et des ordonnées.
1) D'abord et comme pour tous les exemples, le code minimum pour débuter son script PHP...
include("
phpToPDF.php
"
);
$PDF
=
new phpToPDF();
$PDF
->
AddPage();
$PDF
->
SetFont('
Arial
'
,
'
B
'
,
16
);
2) Ensuite, la création des droites que nous voulons afficher...
Elles ne sont pas définies mathématiquement (y=ax+b) mais elles sont définies par deux ordonnées, y1 et y2. Ce graphique peut donc nous montrer une progression avec ou sans intervalle.
$droite1
=
array(0
,
100
,
array(255
,
0
,
0
),
"
droite 1
"
);
$droite2
=
array(50
,
25
,
array(0
,
255
,
0
),
"
droite 2
"
);
$droite3
=
array(12
,
45
,
array(0
,
0
,
255
),
""
);
$droites
=
array($droite1
,
$droite2
,
$droite3
);
- array(0, 100, ...);0 et 100 sont les ordonnées y1 et y2;
- array(..., array(255,0,0),...);array(255,0,0) définit la couleur de la droite;
- array(..."droite 1");"droite 1" définit le nom de la droite dans la légende. Si cet argument est "", il n'y aura pas de légende pour cette droite;
- $droites = array($droite1, $droite2, $droite3); C'est cette variable qui sera envoyée à la méthode setRepere.
3) Enfin, l'appel de la méthode setRepere pour générer le graphique et l'affichage du document PDF.
$PDF
->
setRepere("
Titre du graphique
"
,
30
,
80
,
100
,
60
,
array("
Evolution du PIB de la Creuse en 1956
"
),
array(0
,
100
,
5
),
$droites
);
$PDF
->
Output();
- $titre C'est le titre du graphique (centré en haut du graphique);
- $posX et $posY Ce sont les coordonnées du coin en haut à gauche du graphique;
- $sizeX et $sizeY Ce sont les dimensions du graphique;
- $datasX C'est un tableau à un ou deux éléments. S'il n'y a qu'un élément, c'est une légende de l'axe des abscisses, sinon, le premier élément correspond au départ de la droite et le deuxième correspond à la fin de la droite (ex: array("année N-1", "année N"));
- $datasY C'est un tableau dont les deux premiers éléments sont les min et max de l'ordonnée. Le troisième argument est le nombre d'intervalles entre les min et max;
- $droites C'est le tableau qui contient les droites. (cf. 2)
III-B. Insérer un tableau▲
Les méthodes utilisées pour cela sont inspirées d'un code de www.fpdf.org.
Nous allons voir ici comment définir un tableau composé d'un header et d'un contenu.
III-B-1. Un tableau simple▲
1) D'abord et comme pour tous les exemples, le code minimum pour débuter son script PHP...
include("
phpToPDF.php
"
);
$PDF
=
new phpToPDF();
$PDF
->
AddPage();
$PDF
->
SetFont('
Arial
'
,
'
B
'
,
16
);
2) Ensuite, la création des variables utilisées pour la génération du tableau.
// Définition des propriétés du tableau.
$proprietesTableau
=
array(
'
TB_ALIGN
'
=>
'
L
'
,
'
L_MARGIN
'
=>
15
,
'
BRD_COLOR
'
=>
array(0
,
92
,
177
),
'
BRD_SIZE
'
=>
'
0.3
'
,
);
// Définition des propriétés du header du tableau.
$proprieteHeader
=
array(
'
T_COLOR
'
=>
array(150
,
10
,
10
),
'
T_SIZE
'
=>
12
,
'
T_FONT
'
=>
'
Arial
'
,
'
T_ALIGN
'
=>
'
C
'
,
'
V_ALIGN
'
=>
'
T
'
,
'
T_TYPE
'
=>
'
B
'
,
'
LN_SIZE
'
=>
7
,
'
BG_COLOR_COL0
'
=>
array(170
,
240
,
230
),
'
BG_COLOR
'
=>
array(170
,
240
,
230
),
'
BRD_COLOR
'
=>
array(0
,
92
,
177
),
'
BRD_SIZE
'
=>
0.2
,
'
BRD_TYPE
'
=>
'
1
'
,
'
BRD_TYPE_NEW_PAGE
'
=>
''
,
);
// Contenu du header du tableau.
$contenuHeader
=
array(
50
,
50
,
50
,
"
Titre de la première colonne
"
,
"
année N-1
"
,
"
année N
"
,
);
// Définition des propriétés du reste du contenu du tableau.
$proprieteContenu
=
array(
'
T_COLOR
'
=>
array(0
,
0
,
0
),
'
T_SIZE
'
=>
10
,
'
T_FONT
'
=>
'
Arial
'
,
'
T_ALIGN_COL0
'
=>
'
L
'
,
'
T_ALIGN
'
=>
'
R
'
,
'
V_ALIGN
'
=>
'
M
'
,
'
T_TYPE
'
=>
''
,
'
LN_SIZE
'
=>
6
,
'
BG_COLOR_COL0
'
=>
array(245
,
245
,
150
),
'
BG_COLOR
'
=>
array(255
,
255
,
255
),
'
BRD_COLOR
'
=>
array(0
,
92
,
177
),
'
BRD_SIZE
'
=>
0.1
,
'
BRD_TYPE
'
=>
'
1
'
,
'
BRD_TYPE_NEW_PAGE
'
=>
''
,
);
// Contenu du tableau.
$contenuTableau
=
array(
"
champ 1
"
,
1
,
2
,
"
champ 2
"
,
3
,
4
,
"
champ 3
"
,
5
,
6
,
"
champ 4
"
,
7
,
8
,
);
- $proprietesTableau Cette variable contient les propriétés du tableau, l'alignement, la marge, la couleur et l'épaisseur de bord;
- $proprieteHeader Cette variable contient les propriétés du header, couleurs, taille, font, alignement du texte ; couleur et taille des bordures;
- $contenuHeader Cette variable contient les largeurs des colonnes et leurs contenus;
- $proprieteContenu Du même type que $proprieteHeader, cette variable contient les propriétés du reste du tableau (elles peuvent différer...);
- $contenuTableau Cette variable contient le contenu du tableau, pour X colonnes et Y lignes, il faut X*Y items dans ce tableau.
3) Enfin, on génère le tableau et on affiche le résultat.
// D'abord le PDF, puis les propriétés globales du tableau.
// Ensuite, le header du tableau (propriétés et données) puis le contenu (propriétés et données)
$PDF
->
drawTableau($PDF
,
$proprietesTableau
,
$proprieteHeader
,
$contenuHeader
,
$proprieteContenu
,
$contenuTableau
);
$PDF
->
Output();
III-B-2. Un tableau plus complexe▲
Les fonctionnalités présentées ici permettent de différencier non seulement le "header" et le contenu du tableau mais aussi chaque cellule du contenu. Il devient possible de faire varier le style du texte de chaque cellule (aligner, souligner, mettre en italique ou en gras).
1) Il faut toujours commencer par le même code c'est-à-dire :
include("
phpToPDF.php
"
);
$PDF
=
new phpToPDF();
$PDF
->
AddPage();
$PDF
->
SetFont('
Arial
'
,
'
B
'
,
16
);
2) C'est à la création des variables qu'il y a des petits changements.
Il devient possible d'ajouter des balises pour chaque cellule du contenu du tableau. Ces balises sont écrites entre crochets et sont classiques (I,U et B pour Italic, Underline et Bold ainsi que LCR pour Left, Centered et Right). Par exemple, si je veux écrire dans une cellule du tableau le texte "Salut" centré et souligné, je mettrais dans cette cellule la chaîne de caractère suivante: "[CU]Salut"
Il est aussi possible de fusionner deux cellules. Pour cela, il suffit de mettre dans la première cellule le texte des cellules fusionnées et de mettre dans la deuxième cellule la chaîne de caractères "COLSPAN2".
Dans un tableau à 3 colonnes, si je veux fusionner les deux premières cellules de la première ligne, il faut mettre à la ligne désirée:
"mon texte", "COLSPAN2", "le contenu de ma troisième cellule"
// Définition des propriétés du tableau.
$proprietesTableau
=
array(
'
TB_ALIGN
'
=>
'
L
'
,
'
L_MARGIN
'
=>
15
,
'
BRD_COLOR
'
=>
array(0
,
92
,
177
),
'
BRD_SIZE
'
=>
'
0.3
'
,
);
// Définition des propriétés du header du tableau.
$proprieteHeader
=
array(
'
T_COLOR
'
=>
array(150
,
10
,
10
),
'
T_SIZE
'
=>
12
,
'
T_FONT
'
=>
'
Arial
'
,
'
T_ALIGN
'
=>
'
C
'
,
'
V_ALIGN
'
=>
'
T
'
,
'
T_TYPE
'
=>
'
B
'
,
'
LN_SIZE
'
=>
7
,
'
BG_COLOR_COL0
'
=>
array(170
,
240
,
230
),
'
BG_COLOR
'
=>
array(170
,
240
,
230
),
'
BRD_COLOR
'
=>
array(0
,
92
,
177
),
'
BRD_SIZE
'
=>
0.2
,
'
BRD_TYPE
'
=>
'
1
'
,
'
BRD_TYPE_NEW_PAGE
'
=>
''
,
);
// Contenu du header du tableau.
$contenuHeader
=
array(
50
,
50
,
50
,
"
Titre de la première colonne
"
,
"
année N-1
"
,
"
année N
"
,
);
// Définition des propriétés du reste du contenu du tableau.
$proprieteContenu
=
array(
'
T_COLOR
'
=>
array(0
,
0
,
0
),
'
T_SIZE
'
=>
10
,
'
T_FONT
'
=>
'
Arial
'
,
'
T_ALIGN_COL0
'
=>
'
L
'
,
'
T_ALIGN
'
=>
'
R
'
,
'
V_ALIGN
'
=>
'
M
'
,
'
T_TYPE
'
=>
''
,
'
LN_SIZE
'
=>
6
,
'
BG_COLOR_COL0
'
=>
array(245
,
245
,
150
),
'
BG_COLOR
'
=>
array(255
,
255
,
255
),
'
BRD_COLOR
'
=>
array(0
,
92
,
177
),
'
BRD_SIZE
'
=>
0.1
,
'
BRD_TYPE
'
=>
'
1
'
,
'
BRD_TYPE_NEW_PAGE
'
=>
''
,
);
// Contenu du tableau.
$contenuTableau
=
array(
"
mon texte
"
,
"
COLSPAN2
"
,
"
le contenu de ma troisième cellule
"
,
"
[CU]Salut 1
"
,
1
,
2
,
"
champ 2
"
,
3
,
4
);