RciTools RPDF - Génération de documents PDF depuis Oracle

     

RCI Informatique, 2 avril 2007

1 - Introduction

- Oracle Application Express, nommé auparavant Oracle HTML DB, permet de créer des applications interactives, en mode HTML, accédant directement aux données Oracle. On peut le définir en tant qu'interface graphique à la programmation PL/SQL.

- Oracle Application Express permettait, avec les versions 2.1 et 2.2 de générer des rapports, sous deux formes différentes: tableaux HTML et export CSV. Ces types de rapports conviennent à la formulation de requêtes de type "infocentre". 

- La version 3.0 d' Oracle Application Express offre la possibilité de production d'états PDF, sous forme d' interface avec un autre produit d'Oracle, nommé Oracle BI Publisher.

Cependant, il est souvent nécessaire de pouvoir réaliser des états avec une mise en page bien précise, de disposer de pages indépendantes ou groupées, d'envoyer automatiquement ces documents dans des messages e-mail, de les conserver dans des serveurs de documents, d'ajuster la taille des pages au contenu, etc.

Le format PDF est un des formats les plus utilisés actuellement, indépendant des affichages et des moyens d'impression.

De nombreux outils de "reporting" existent "sur le marché", sous forme de produits indépendants, édités par Oracle ou par d'autres éditeurs.
Mais leur utilisation pose un certain nombre de questions:  mode et complexité de déploiement, coût des licences, temps de réponse pour fabriquer un état, nécessité d'utiliser un serveur d'application distinct, langages différents de PL/SQL, etc.

C'est pourquoi RCI Informatique a décidé, début 2005,  la création d'un "package PL/SQL" destiné à la production simple et rapide de documents PDF.

Le langage PL/SQL s'inscrit tout à fait dans la lignée des langages orientés algorithmes, sur lesquels RCI Informatique a travaillé depuis sa création en 1982 :   Algol, Simula, Pascal, Modula 2 et Delphi.
C'est cette lignée de langage  qui a permis la réalisation de programmes fiables, durables, toujours lisibles et maintenables même après de nombreuses années.

Nous avons bénéficié de l'expérience acquise avec le développement d'un package Oracle PL/SQL entre 1992 et 1995, qui, à l'époque générait non pas du langage PDF mais du langage PostScript. 
Le PostScript généré était ensuite traduit en PDF par des applications Acrobat Distiller, fonctionnant en arrière plan, et scrutant en permanence les répertoires contenant les documents "à convertir".

Domaines d'utilisation  :

- Catalogues (Textes, images, pictogrammes, filets, ..)
- Planches d'étiquettes
- Lexiques en plusieurs langues
- Mise en page automatique à partir de données
- Tableaux financiers destinés à l'impression tels que cours de devises, valeurs d'actions, etc.
- Bons de commande avec codes à barre (UPC, EAN 13, etc.)



2 - Objectifs fonctionnels du package RciTools - RPDF  de génération de documents PDF
 

- Rapidité et simplicité de programmation, afin de pouvoir, en seulement quelques instructions, obtenir de véritables résultats

- Utilisation en mode interactif ou en mode "batch", afin de pouvoir obtenir en moins d'une seconde des documents de type facture ou bon de commande, et en quelques secondes ou dizaines de secondes, des états de dizaines ou centaines de pages.

- Obtention de documents PDF "à la volée" (directement envoyé à l'utilisateur via le navigateur) ou destinés à être stockés pour archivage ou utilisations ultérieures.

- Disposer d'instructions de "bas niveau" (exemple écrire un texte à une position précise dans une typographie indiquée) et d'instructions plus puissantes telles que la génération de tableaux, sur une ou plusieurs pages, ou le placement dans un document PDF d'une image obtenue depuis une URL, et ceci en une seule instruction.

- Pouvoir s'intégrer facilement à Oracle Application Express, avec utilisation directe, dans les blocs PL/SQL avec accès aux "champs" d'Oracle Application Express.

- Convenir aussi bien à des générations PDF simples, qu'à des applications documentaires complexes.

- Offrir un bon niveau de performances en termes de rapidité de génération

- Etre facile à déployer, en particulier pour pouvoir être utilisé dans un contexte d'hébergement mutualisé Oracle Application Express, ou pour des diffusions à grande échelle avec Oracle XE.

- Ne nécessiter aucun serveur d'application, ni langage autre que PL/SQL, fonctionner avec tout serveur Oracle 10g  (Windows, Macintosh OS, Linux, etc.), et pouvoir fonctionner avec la version "gratuite" Oracle XE (10g Express Edition)

 


3 - Caractéristiques du package RciTools - RPDF  de génération de documents PDF
 

Description de la version 1.07 de septembre 2006

- Texte dans les 14 polices de caractère "de base" du langage PDF
- Définition de la taille, couleur et style  (gras et/ou italique)
- Rectangles et filets, contour et contenu
- Pré-définition de couleurs (avec noms français et anglais)
- Définition de nouvelles couleurs personnalisées
- Alignement à droite et centré des textes
- Gestion des minuscules accentuées de la langue française et des autres caractères spéciaux
- Pré-définition de formats de pages (A4, B5, A3, etc.)
- Définition de formats personnalisés, choix de la disposition
- Ajout d'images JPEG depuis trois sources possibles:  URL, Dossier WebDAV (XDB) et Espace de travail Application Express
- Non duplication des images utilisées plusieurs fois dans un même document
- Génération de commentaires dans le PDF généré
- Moteur intégré d'exécution de requêtes SQL construisant des structures, en mémoire, sous forme de tables PL/SQL
- Génération directe en PDF  de tableaux, avec colonnage et pagination automatique
- Instructions de formatage des dates et des nombres
- Sauvegarde programmable des documents PDF générés en tant que "BLOBs"
- Automatismes d'ouverture des documents PDF, dans de nouvelles fenêtres, depuis Oracle Application Express
- Utilisation à l'intérieur de blocs PL/SQL d'Oracle Application Express ou avec des procédures stockées
- Utilisation en programmation directe Oracle DAD-PL/SQL
- Outil de mesure des performances, en millisecondes
- Fonction de détection de l'utilisation (ou non) de la version Oracle XE, de façon à permettre une auto-adaptation des procédures PL/SQL
- Génération de codes à barre UPC / EAN 13, sans utiliser de polices de caractères, par dessin vectoriel.
 

- Entièrement réalisé en langage PL/SQL, les définitions liées aux polices de caractères sont directement intégrées, de façon compactée, dans le package PL/SQL.

Interface PL/SQL de la version 1.07 du package RciTools RPDF


4 - Exemples de mise en oeuvre du package RciTools - RPDF

Les exemples suivants de génération PDF  ont tous été réalisés avec la version 1.07 de ce package.
Ils ont été testés avec Oracle XE et Oracle 10g enterprise,  Oracle Application Express 2.1 et 2.2
Ils en présentent les principales fonctionnalités.
Chaque exemple n'utilise qu'entre 2 et 15 lignes de programmation PL/SQL.
Les programmes source PL/SQL sont également affichés dans ces documents PDF.
Les liens permettent d'accéder aux documents PDF.


Exemples de génération de texte

Exemples de génération de lignes, filets, rectangles et placement d'images

Exemples de formats de pages et de génération de tableaux et colonnes, à partir de requêtes SQL

Exemples de codes à barres
 



5 - Disponibilité et mode de diffusion de ce package

- Ce package est intégré, depuis le deuxième trimestre 2006,  par RCI Informatique SAS à ses propres développements et aux développement effectués auprès de ses clients.

- Si vous souhaitez pour vos propres projets de développement pouvoir utiliser, dès maintenant, le package RciTools RPDF, contactez nous afin que nous puissions étudier ensemble comment le faire, et dans quelles conditions.
 

RCI Informatique
Tél:  02 35 71 24 59    ou    (33) 2 35 71 24 59
Mail:   rci@wanadoo.fr


6 - Eléments bibliographiques et liens vers des solutions de génération de document PDF
 

Adobe, Langage PDF, Définitions et référence

Adobe, Langage Postscript, Définitions et référence

Comparatif de différentes solutions de génération de PDF avec PHP

Bibliothèque FPDF pour PHP

Bibliothèque PDFlib

PL/PDF package pour Oracle

Génération de PDF avec WebObjects

Génération de PDF avec SPIP

Génération de PDF avec Crystal Reports

Interface PL/SQL de la version 1.07 du package RciTools RPDF

Document PDF regroupant l'ensemble des exemples de génération avec RciTools RPDF

Dossier technique Oracle Application Express 4.2 / HTML DB



Tous droits réservés, RCI Informatique SAS, 2004-2006

rci@wanadoo.fr

www.rci-informatique.net