Exemple SYSPDF
Notre exemple se compose donc de deux objets. le premier objet (IMPR_LISTE_PAYS) est chargé du dialogue avec l'utilisate et appel le second objet (IMPR_LISTE) qui est chargé de faire l'impression du fichier pdf.
Composant IMPRPDF
Declaration
BASE : "SERVICE"
GLOBAL : "SVCPAYS"
FinDeclaration
Objet INTERFACE : INTERFACE
Declaration
MODES : "V"
FinDeclaration
FinObjet
Objet TRAITEMENT : IMPR_LISTE_PAYS "Liste des pays au format PDF"
Methode FAIRE
Variables : Chaine repertoirepdf //Nom du répertoire où l'on conservera le fichier pdf généré.
Chaine nomfichierpdf //Nom final que l'on souhaite donner au fichier pdf généré.
Chaine nompdftmp //Nom du fichier temporaire généré par l'imprimante pdf.
Entier verreur //Utilisé pour tester si le fichier a été correctement copié.
nomfichierpdf = "Liste des pays.pdf"
repertoirepdf="[OXYPP]DocPdf"
Si BoiteDialogue("Génération d'un fichier PDF",Interrogation,"Vous demandez la génération de la liste des pays en format pdf. Confirmez vous l'opération ?","$1~Oui","0~Non") = 0
Alors
Quitter
FinSi
//On contrôle que l'on a bien défini une imprimante PDF, si ce n'est pas le cas,
//un assistant du composant SYSPDF nous aidera à en installer une.
AppliquerMethodeComposant "SYSPDF"."CONTROLE_IMPRIMANTE_INSTALLEE"
Si ErreurRendue<>0 Alors //On continue uniquement si on a paramétré une imprimante PDF
BoiteMessage "Impossible de lancer une impression pdf tant que vous n'avez pas correctement paramétré l'imprimante PDF dans Oxygène"
Quitter
FinSi
//Appel à la méthode CONVERSION_CHEMIN du composant SYSASCII pour remplacer [OXYPP] par la
//véritable valeur du répertoire OXYPP
AppliquerMethodeComposant "SYSASCII"."CONVERSION_CHEMIN"(repertoirepdf)
//On créé le répertoire où l'on copiera le fichier généré.
CreRep repertoirepdf
//On demande au composant SYSPDF d'afficher un écran d'attente pour faire patienter l'utilisateur
//pendant le traitement.
AppliquerMethodeComposant "SYSPDF"."LANCE_IHMPDF" ("Génération fichier PDF","",nomfichierpdf)
//On appel l'objet d'impression qui nous retournera en paramètre le nom du fichier généré au format pdf.
nompdftmp=""
AppelerObjet "IMPR_LISTE" (nompdftmp)
//Si l'objet d'impression nous a retourné un nom de fichier pdf généré, on appel la méthode du composant
//SYSPDF qui est chargée de copier ce fichier dans le répertoire qu'on lui a indiqué (repertoirepdf)
Si nompdftmp<>"" Alors
AppliquerMethodeComposant "SYSPDF"."RECUPERE_PDF" (nompdftmp,repertoirepdf,nomfichierpdf,90)
verreur=ErreurRendue
FinSi
//On demande au composant SYSPDF de fermer l'écran d'attente.
AppliquerMethodeComposant "SYSPDF"."QUITTE_IHMPDF"
//Si on a généré un pdf et que la copie dans le répertoire spécifié a été correctement effectué,
//on demande à l'utilisateur s'il souhaite afficher le fichier généré. Sinon, on affiche une erreur.
Si nompdftmp<>"" Et verreur=0 Alors
Si BoiteDialogue ("Génération d'un fichier PDF",Interrogation,"Votre fichier pdf a été correctement généré, souhaitez vous l'ouvrir ?","$1~Oui","0~Non")=1 Alors
AppliquerMethode "AFFICHE_PDF"(repertoirepdf+""+nomfichierpdf)
FinSi
SinonSi nompdftmp="" Alors
BoiteMessage "Fichier non créé par l'éditeur pdf"
Sinon
BoiteMessage "Fichier correctement généré dans le répertoire temporaire, mais pas récupérer dans le répertoire @"+repertoirepdf
FinSi
FinMethode
//Méthode qui permet d'afficher le fichier pdf.
Methode AFFICHE_PDF
Parametres : Chaine pfichier
Variables : Chaine resultat
resultat=ShellExecute("open",pfichier,"","",SW_SHOW)
Si resultat<32 Alors
BoiteMessage "Aucun programme n'est associé au fichier :@"+pfichier
FinSi
FinMethode
FinObjet
Objet EDITION_ETAT : IMPR_LISTE "Liste des pays au format PDF - Edition"
Declaration
Parametres : Chaine Reference vnomdoctmp
TABLE : "SVCPAYS"
ETAT : "LISTE"
FinDeclaration
Methode INIT
//On indique le nom du fichier temporaire qui sera généré par l'imprimante PDF
vnomdoctmp="Listepays-"+Utilisateur
//On appel la méthode SET_NOM_DOC du composant SYSPDF, pour indiquer le nom du fichier PDF à
//généré et surtout, c'est l'appel à cette méthode qui indiquera au moteur Oxygène que l'on
//souhaite faire une impression pdf.
AppliquerMethodeComposant "SYSPDF"."SET_NOM_DOC" (vnomdoctmp)
//On récupère le nom du fichier temporaire qui va être généré, le composant SYSPDF aurait
//pu le modifier si celui-ci n'était pas conforme.
AppliquerMethodeComposant "SYSPDF"."GET_NOM_DOC" (vnomdoctmp)
AppliquerDefaut
FinMethode
FinObjet