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