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