I. Avant propos▲
Dans cet exemple nous allons voir comment générer du pdf à partir de Delphi et cela gratuitement sans
installer d'imprimante virtuelle.
Pour ce tutoriel, j'ai utilisé Turbo Delphi ExplorerTurbo Delphi Explorer un équivalent gratuit de Delphi 2006 (win32).
Cette version permet en outre de distribuer commercialement ou non ses applications.
Néanmoins l'ajout et la création de composants vcl est bloquée mais cela ne posera pas de
problème comme nous allons le voir.
En effet, nous allons utiliser PHP et plus particulièrement PHP CLI (Command Line Interface).
Dans ce cas il est alors inutile d'installer un serveur ; l'interpréteur php fonctionnera seul comme
un .exe
En fait l'idée est d'utiliser non pas un composant pdf de la vcl (en général payant) mais d'utiliser une bibliothèque PHP fournissant les mêmes fonctions.
Les dépendances doivent aussi être limitées (le programme doit pouvoir se lancer sur n'importe quel système Windows) ce qui exclut la mise en oeuvre d'une imprimante virtuelle comme PDF Creator.
II. Les fichiers nécessaires▲
Il faut d'abord vous procurer PHPPHP ainsi que la librairie php Fpdffpdf.
Vous n'avez pas besoin d'utiliser tous les fichiers du dossier php5 (en
tout cas pour ce tutoriel).
Créons donc un nouveau dossier pour notre futur projet. Dans ce dossier on
glissera :
fpdf.php | La bibliothèque fpdf. |
font | Un dossier contenant les polices (fichiers php) que l'on veut utiliser dans le pdf à créer. |
php.exe | L'executable console de php - utile si l'on veut tester ses scripts php en mode console. |
php-win.exe | C'est la même chose sauf que la fenêtre de la console n'apparaîtra pas. |
php5ts.dll | Le plus important, c'est l'interpréteur php en personne. |
III. Utiliser PHP grâce à Delphi▲
Lançons notre IDE préféré et créons un nouveau projet win32.
On place une Form avec dessus un TMemo et deux TButton.
J'ai choisi arbitrairement de placer le script php dans le TMemo.
Voici le code du script php :
//On inclut la bibliothèque fpdf
include ('
fpdf.php
'
);
//On crée une nouvelle instance fpdf
$pdf
=
new FPDF();
// Nouvelle page
$pdf
->
AddPage();
//Choix d'une fonte et de sa taille
$pdf
->
SetFont('
Helvetica
'
,
''
,
14
);
//Un retour à la ligne
$pdf
->
Ln();
$pdf
->
SetFontSize(12
);
//Ecriture d'une ligne
$pdf
->
Write(12
,
"
Mon premier document pdf :
"
);
$pdf
->
Ln();
$pdf
->
Ln();
//Création et remplissage d'une cellule
$pdf
->
Cell(60
,
5
,
'
Le
'
,
1
);
$pdf
->
Cell(60
,
5
,
'
joli
'
,
1
);
$pdf
->
Cell(60
,
5
,
'
tableau
'
,
1
);
$pdf
->
Output("
fichier_pdf.PDF
"
,
"
F
"
);
exit;
Nous allons ensuite communiquer le script php à php-win.exe par l'intermédiaire de la commande shellExecute
(n'oubliez pas de déclarer shellApi dans la clause Use). Ensuite nous ouvrirons le fichier généré par cette
même commande.
procedure
TForm1.Button1Click(Sender: TObject);
begin
//On sauvegarde le memo1 sous la forme d'un fichier php.
Memo1.Lines.SaveToFile('gen_pdf.php'
);
//On demande à l'interpréteur php de parser le fichier créé pour générer le pdf.
ShellExecute(Handle,'open'
,'php-win.exe'
,'gen_pdf.php'
,nil
,SW_HIDE);
//On ouvre le pdf
ShellExecute(Handle,'open'
,PChar('fichier_pdf.pdf'
),nil
,nil
,SW_SHOW);
end
;
On lance
le projet et voila.
Télécharger l'application :
[FTP] ou
[HTTP]
IV. Faire du reporting avec cette technique▲
En cours ...
V. Conclusion▲
Vous l'aurez compris, il faut connaître un peu le php pour pouvoir se lancer mais cela permet d'utiliser
les nombreuses bibliothèques et extentions du PHP avec une édition gratuite de Delphi.
Pour plus d'informations :
PhpCLI
http://fr.php.net/features.commandline
Fpdf et ses possibilités
http://www.fpdf.org
http://jc-cornic.developpez.com/tutoriels/php/pdf/
Php-Gtk une autre façon d'utiliser php
http://php.developpez.com/cours/php-gtk-1/