Accueil > [old] Information > Archives > Technologies > Archives > PL/SQL > PL_FPDF
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.
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 :
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;Un message, un commentaire ?
Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.
back.projets.erasme.org
PL_FPDF
Messages
1. PL_FPDF, 28 août 2008, 17:40, par tony671
Bonjour,
Voila ca fait 3,4 mois que je me suis mis au PLSQL, et j’étais très intéressé par votre library car je voudrais générer un pdf à partir de l’annuaire que j’ai développé en pl/sql. J’ai téléchargé la library et j’ai compilé le .pkb et .pks mais je n’arrive pas utiliser les balise PDF. dans une procedure (error : declaré l’indentificateur ...) Pouvez vous m’indiquez la marche a suivre pour utiliser cette librairie ?
MERCI
1. PL_FPDF, 1er septembre 2008, 16:23, par Pierre-Gilles Levallois
Bonjour,
avez vous un message d’erreur concret à mettre dans ce forum, cela pourrait aider à vous guider ?
Est-ce que le package compile sans erreur ?
Est-ce que vous avez bien remplis tous les pré-requis ?
2. PL_FPDF, 22 avril 2011, 18:21, par Dramus
Love the Package !!
The AddLink() function does not work. Here is my amended version that seems to generate an internal link ID.
function AddLink return number is
nb_link number ;
begin
if links is null
then
links := Array2dim() ;
end if ;
links.extend ;
nb_link := links.count ;
— Create a new internal link
links(nb_link).zero := 0 ;
links(nb_link).un := 0 ;
return nb_link ;
end AddLink ;
The ability to put an internal link in a PDF also seems to be damaged. The ability to use an external link does work. But an internal link generates an invalid PDF.
I will be looking further into this and hopefully come up with a solution.
3. PL_FPDF, 26 avril 2011, 10:32, par Pierre-Gilles Levallois
Hi Dramus,
Thanks for your function that looks great.
I will replace the actual one by yours, and publish a new release of pl_fpdf soon.