Générer du PDF avec Delphi, PHP-Cli et FPDF

Willy Vauvelle

Générer du PDF avec Delphi, PHP-Cli et FPDF

- Titre : Générer du PDF avec Delphi, PHP-Cli et FPDF

- Auteur : Willy Vauvelle

- Parution : 1 novembre 2008

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008 Willy Vauvelle. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Avant propos

- II. Les fichiers nécessaires

- III. Utiliser PHP grâce à Delphi

- IV. Faire du reporting avec cette technique

- V. Conclusion

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 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 PHP ainsi que la librairie php Fpdf.
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.

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/