RciTools RPDF - Génération de documents PDF depuis Oracle
Interface Oracle PL/SQL du package
Ceci est la description des types de données,
variables, fonctions et procédures, accessibles au programmeur Oracle PL/SQL,
pour la version 1.07 :
CREATE OR REPLACE PACKAGE "RPDF" IS
-----------------------------------------------
-- PDF Generation with PL/SQL --
-- Copyright RCI Informatique SAS --
-- 2005/2006 --
-----------------------------------------------
tVersion varchar2(100) := '1.07';
-- Types declarations --
Type TableNb is table of number
index by binary_integer;
Type TableStr is table of varchar2 (4000) index by binary_integer;
Type TableInt is table of integer
index by binary_integer;
type PDF_var_type is record (
CurrentTextFont varchar2(1000) := 'times',
CurrentTextSize number := 24,
CurrentBold boolean := false,
CurrentItalic boolean := false,
CurrentTextColor varchar2(100) := 'noir',
CurrentFillColor varchar2(100) := 'gris clair',
CurrentBorderColor varchar2 (100) := 'noir',
CurrentLineW number := 1, --epaisseur
courante des traits et bordures
CurrentPageDim varchar2(100) := 'b5',
CurrentPageLandscape boolean := true,
CurrentEnteteH number := 50,
CurrentPiedH number := 35,
LastTxtX
number := 0 , -- position horizontale du dernier texte écrit
LastTxtY
number := 0 , -- position verticale du dernier texte écrit
CurrentEntetePiedFiletW number := 0.5, -- le filet de l'entête est par
défaut 1/2 point
NumPage
integer:= 0, -- le numéro de la page courante PDF actuellement en cours
outerminée, pagination de 1 à n
NumRow
integer :=0, -- le numéro de la ligne "en cours", pour les génération organisées
en lignes/colonnes
NumCol
integer := 0, -- le numéro de la colonne "en cours"
MaxRows
integer :=20, -- nombre maximaux de lignes et de colonnes
MaxCols
integer := 5,
CurrentColW number := 30, -- nb
de points maxi pour la colonne en cours
CurrentFormatDate varchar2(100) := 'DD/MM/YYYY',
CurrentFormatDecimal varchar2(100) := '999G999G999G999G990D00',
CurrentFormatInteger varchar2(100) := '999G999G999G999G990',
CurrentFormatNumber varchar2(100),
PL_Sql_source varchar2
(32000):= '', -- PL/SQL source from Oracle Application Express
PDF_ID
varchar2 (100) := '' -- Identifiant du document PDF venant d'être généré, garni
après "Show"
); -- type PDF_var_type
Type PDF_Image is record (
Image Blob,
w number, -- largeur
h number -- hauteur
);
type ReqCell is record (
RowNb integer := 0, -- from 1 to n
ColumnNb integer := 0, -- from 1 to n
-- values
ValNumber number := 0,
ValString varchar2 (4000) := '',
ValDate date := null
);
Type CellsTable is table of ReqCell index by binary_integer;
type CellsSpace is record (
rSQL varchar2 (4000), -- la requête SQL source
ColsTypes TableInt, -- nb et types des colonnes
ColsNames TableStr, -- nom des colonnes
Rows TableInt, --
position du début de chaque ligne dans la table des cellules
Cells CellsTable, -- liste des cellules
ColsWidths tableNB); -- largeurs maximales des colonnes d'une
structure Cell pour les paramètres PDF actuels
-- Variables globales accessibles
wD PDF_var_type; -- variables PDF
PourPDF boolean := true; -- sortie PDF (ou sinon HTML)
-- Types Oracle
OraTypString integer := 1;
OraTypNumber integer := 2;
OraTypDate integer := 12;
OraTypBlob integer := 113;
-- Types complémentaires
OraTypDecimal integer := 1002;
OraTypInteger integer := 1003;
-- Procédures et fonctions
PROCEDURE New;
-- Initialisation d'un nouvel état PDF
PROCEDURE Show ( savePdf in boolean default false);
-- Termine l' état PDF en cours
-- envoie son image en tant que flot Http de type PDF, vers le navigateur de
l'utilisateur
-- sauvegarde éventuellement le PDF généré dans la table PDF_TEMP
PROCEDURE BeginPage (EndPrevious boolean default false);
-- Ajout d'une nouvelle page à l'état en cours de création
PROCEDURE EndPage;
-- Termine la page en cours
proce TT (x in varchar2, xPosX in number, xPosY in number, xF in varchar2,
xLargeur in number);
-- Ecriture de texte dans la page PDF en cours, avec les attributs
typographiques en cours
-- la chaine de caractères x
-- à partir de la position xPosX, xPosY
-- avec les attributs xF (centrage, cadrage à droite)
-- sur une largeur de xLargeur
-- Ecriture de texte PDF depuis une string
procedure Write (t in varchar2 default '',
tFont in varchar2 default null,
tSize in number default null,
tBold in boolean default null,
tItal in boolean default null,
x in number default null,
y in number default null,
tVert in boolean default false,
tOblic in boolean default false,
tAlign in varchar2 default '',
tW in number default 0,
dn in number default null,
color in varchar2 default null);
-- Ecriture de tablaux PDF depuis une structure de données
procedure Write ( CS in
out nocopy CellsSpace,
tFont in varchar2 default null,
tSize in number default null,
tBold in boolean default null,
tItal in boolean default null,
x in number
default null,
y in number
default null,
tW in number
default 0,
color in varchar2 default null,
autoPages in boolean default false,
autoColumns in boolean default false,
draw in boolean default false);
-- Définition des attributs "courants" du texte, avant l'écriture de celui-ci
dans la page PDF "en cours"
Procedure TFont (x in varchar2);
Procedure TSize (x in number);
Procedure TBold (x in boolean);
Procedure TItal (x in boolean);
Procedure TColor (x in varchar2);
-- Définition des attributs "courants" du tracé avant écriture dans la page PDF
"en cours"
Procedure SetDrawFillColor (x in varchar2);
Procedure SetDrawBorderColor (x in varchar2);
Procedure SetLineW
(x in number);
-- Dessin de formes
Procedure Line (x1 in number, y1 in number, x2 in number, y2 in number);
-- Tracé d'une ligne, avec les attributs courants, du point x1, y1 jusqu'au
point xF,yF
-- Fixation des attributs graphiques pour rectangles et filets
Procedure SetDraw (BorderColor in varchar2 default null,
FillColor in varchar2 default null,
BorderSize in number default null
);
-- Tracé de rectangles
Procedure Rect (x1 in number, y1 in number, x2 in number, y2
in number);
Procedure Rect (x in number, y in number, width in number, height in
number);
-- Couleurs, images
Procedure AddColor (FrenchName in varchar2, EnglishName in varchar2, R in
integer, G in integer, B in integer);
-- Création d'une nouvelle couleur, définie à partir de ses composantes R, V et
B
-- Retourne la largeur (calculée ou indiquée) d'une image téléchargée
Function GetImageWidth (ImageNumber in integer) return number;
-- Retourne la hauteur (calculée ou indiquée) d'une imaéchargée
Function GetImageHeight (ImageNumber in integer) return number;
-- Ajout d'une image à la table de référence des images
-- Une image pourra être affichée n fois dans le document PDF
-- en étant présente une seule fois dans le document - si argument httpFile,
télécharge, via le réseau, une image de type JPEG
-- Uniquement pour Oracle 10G standard et entreprise
-- Ne fonctionne pas avec Oracle XE
-- si argument webDavFile, chargt d'une image depuis un réperoire virtuel WebAV
(XDB)
-- fonctionne avec Oracle XE, et Oracle 10G standard et entreprise
-- si argument iBlob, utilise l'image fournie, sous forme de variable BLOB
-- fonctionne avec Oracle XE, et Oracle 10G standard et entreprise
function AddImage (iBlob in blob
default null,
iWidth in integer default 0,
iHeight in integer default 0,
webDavFile in varchar2 default null,
httpFile in varchar2 default null) return integer;
Procedure DrawImage
-- Dessine une image JPEG dans la page courante PDF
(num in integer, -- le numéro de l'image téléchargée
auparavant
x in number, -- position horizontale
y in number, -- position verticale
Width in number, -- largeur
Height in number, -- hauteur
F in varchar2 default '' -- directives de
formatage de l'image
);
-- indique si on utilise OracleXE
Function Is_OracleXE return boolean;
-- Dessine un code à barre EAN 13
-- la valeur du code à barre bc
-- la position: x, y
-- la hauteur des barres h
-- le facteur d'échelle horizontale sb
Procedure EAN13 (bc in varchar2,
x in number default NULL,
y in number default NULL,
h in number default NULL,
sb in number default 1);
-- Informations
-- Retourne la largeur totale (sur la page PDF) de la chaine de caractères x
-- en tenant compte des attributs typographiques courants
Function LString (x in varchar2) return number;
-- Retourne la largeur courante de la page PDF
Function GetPageWidth return number;
-- Retourne la hauteur courante de la page PDF
Function GetPageHeight return number;
-- Affiche le texte centré dans un rectangle
Procedure Title (t in varchar2,
x in number,
y in number);
-- Retourne la table des nom de couleurs déjà définies
functio GetColors (EnglishNames in boolean default false) return TableStr;
-- SQL Dynamique
Procedure DoSql (rSQL in varchar2,
CS in out nocopy CellsSpace ,
ColsMax in integer default 20,
RowsMax in integer default 500,
res out integer);
-- execute la requête xSQL, les données sont rangées dans CS
-- avec ColsMax nb de colonnes maxi
-- RowsMax nb de lignes maxi
-- res comporte le résultat 0 = ok
Function Dn (CS in out nocopy CellsSpace, ColName in varchar2, nRo in integer)
return varchar2;
Function Dn (CS in out nocopy CellsSpace, ColNum in integer, nRow in integer)
return varchar2;
-- Retourne le contenu de la colonne nommée xCol pour la ligne xN
Function D1 (CS in out nocopy CellsSpace, ColName in varchar2) return varchar2;
Function D1 (CS in out nocopy CellsSpace, ColNum in integer) return varchar2;
-- Retourne le contenu de la colonne nommée xCol, de la 1ère ligne
function Cells_GetNbLines (CS in out nocopy CellsSpace) return integer;
-- renvoie le nb de lignes résultantes d'un DoSQL
function Cells_GetNbCols (CS in out nocopy CellsSpace) return integer;
-- renvoie le nb de colonnes résultantes d'un DoSQL
Procedure Cells_Calc_width (CS in out nocopy CellsSpace, NbFirstRows in integer);
-- Calcul des largeurs de colonnes en sortie PDF, avec la typographie courante
-- en analysant les contenus des xNb premières lignes
-- Place un commentaire dans le source du PDF généré
Procedure Comment (x in varchar2);
-- Pour Orace Application Express
-- Créé un pseudo-bouton, avec lien hyperTexte HTML ouvrant
-- dans une nouvelle fenêtre le document PDF généré
procedure Lpdf (xNumAppli in integer,
xNumPDFpage in integer,
xCSS in varchar2,
xMessage in varchar2,
xNumBlocPDF in integer,
xSession in varchar2);
-- Affiche dans le "port" HTTP courant le document PDF, ayant été sauvegardé,
avec la référence indiquée
procedure ShowSavedDoc (PdfID in varchar2);
-- Retou le document PDF généré sous forme de blob, pour manipulation externe
éventuelle
function getPdfDoc (PdfID in varchar2) return blob;
Function GetVersion return varchar2; -- renvoie la version de ce package
-- Ajoute un format personnalisé de ge aux formats prédéfinis
Procedure AddPageFormat (name in varchar, width in number, height in number );
-- retourne la date système en fractions de secondes
Function GetSysTime return number;
-- retourne la durée écoulée en fractions de sndes
-- depuis l'appel de la Procédure New
Function GetElapsedTime return number;
-- retourne la durée écoulée en fractions de secondes
-- depuis l'appel de la Procédure New
-- sous forme d'une chaine de caractères, avec un 0 éventuel ébut
-- et se terminant par "sec."
Function GetET return varchar2;
END; -- package
Retour au sommaire de génération PDF
Tous droits réservés, RCI Informatique SAS, 2004-2006
rci@wanadoo.fr
www.rci-informatique.fr