#liste_articles {display:block}

PL_FPDF

lundi 7 juillet 2008

 

PL_FPDF

english

Longtemps j’ai cherché une librairie PL/SQL libre qui permet de faire du PDF, et je n’en n’ai pas trouvé.

Beaucoup de produits commerciaux existent, mais rien de libre dans ce langage.

Voici donc un portage en PL/SQL de la célèbre librairie PHP FPDF développée par Olivier Plathey.

Je vous propose ce portage en version 0.9.3 qui est la dernière version stable.
Pour ma part, je l’utilise déjà en production sur laclasse.com.

télécharger sur github

Cette librairie PL/SQL propose sensiblement les même fonctionnalités que fpdf, si ce n’est que toutes les images incluses dans les fichier pdf sont converties en png.

Pré-requis d’installation

  • testée et validée sur un noyau Oracle en version 10g (10.2.0.1 et supérieure).
  • Installation de Oracle Web Tool Kit requise (packages owa, htp et htf).
  • Installation des structures OrdSys.OrdImage (gestion des images dans Oracle) requise.
  • Installation du package URIFactory nécessaire.

Changelog

  • 0.9.2 -> 0.9.3 :
    • Ajout d’exemples sur les procédures setHeaderProc et setFooterProc.
    • Ajout de l’implémentation des paramètres sur ces procédures.
    • Modification des procédures Header et footer pour la récupération des paramètres
    • décalration des subtype ’word’ et type ’tv4000a’ dans les spécifications.
  • 0.9.1 -> 0.9.2 :
    • Added procedure helloword Example.
    • Added procedure testImg Example.
  • 0.9.1 Première version stable !
    - Corrections de bugs mineurs (merci à Josh Burroughs)
    • Corrections sur la procédure p_parseimage (Lecture des fichiers images améliorées)
    • Corrections sur la procédure p_escape
  • 0.9-Beta2
    - Corrections de bugs mineurs (merci à Rudy Winter pour ses remarques)
    • Corrections sur la procédure Image
    • Corrections sur les procédure header et Footer

- Les images multiples fonctionnent, mais uniquement au format PNG.

Quelques bugs connus sur cette version

  • Gestion des images au format GIF.
  • Pas de compression du fichier résultant. (ca ce n’est pas un bug mais plutôt un manque de fonctionnalité).
  • La procédure write qui permet d’écrire un flot de texte en tenant compte des dimensions de la page et des sauts de page ne fonctionne pas.
  • ...

Fonctionnalités à développer

  • Une procédure qui prend affiche en PDF un tableau issue d’une requête SQL, quelque soit la requête (analyse et exécution dynamique).

Téléchargez, Testez, et faites évoluer !

Je suis intéressés par les retours, les corrections de bugs, ou les évolutions que chacun pourra proposer.

exemples de code

Voici quelques exemples en ligne :

hello world

Test with an image

Voici quelques exemples de code avec PL_FPDF.

Tout d’abord le helloWord
Notez que la procédure "output" appelle "ClosePdf" d’elle-même.

procedure helloworld is
begin
        pdf.FPDF('P','cm','A4');
        pdf.openpdf;
        pdf.AddPage();
        pdf.SetFont('Arial','B',16);
        pdf.Cell(0,1.2,'Hello World',0,1,'C');
      pdf.Output();
end helloworld;

Insertion d’une image

procedure testImg is
 img varchar2(2000);
begin
        pdf.FPDF('P','cm','A4');
        pdf.openpdf;
        pdf.AddPage();
        pdf.SetFont('Arial','B',16);
      pdf.img := 'http://www.laclasse.com/v2/images/picto_laclassev2.png';
      pdf.Image(img,1, 1, 10);
      pdf.Output();
end testImg;

Documents :

par Pierre-Gilles Levallois