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
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
Génération de PDF avec WebObjects
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
Utilisation en ligne des exemples de génération avec RciTools RPDF
Dossier technique Oracle Application Express 3.0 / HTML DB
Dossier technique Oracle Express Edition (Oracle XE)

Tous droits réservés, RCI Informatique SAS, 2004-2006
rci@wanadoo.fr
www.rci-informatique.fr