Impression et conversion PDF avec PDF Creator

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

0. Présentation de PDF Creator

Cet outil est un freeware, donc pas de souci de licence. Vous pouvez le télécharger ici :

https://sourceforge.net/projects/pdfcreator/

PDF Creator dispose d'une interface COM qui permet de le piloter intégralement, donc depuis WinDev ou WebDev, pas de soucis particulier

I. Utilisation de PDF Creator dans WinDev

Dans votre projet, vous devez commencer par déclarer les variables qui vous permettront d'instancier vos objets :

 
Sélectionnez
MonPDF est un objet OLE dynamique // Objet pilotant PDF Creator
ErreurPDF est un objet OLE dynamique // Objet permettant de gérer les erreurs PDF Creator
MesOptionsPDF est un objet OLE dynamique // Ojet permettant de piloter les options de PDF Creator
DefaultPrinter est une chaîne


Ensuite vous instanciez les objets nécessaires :

 
Sélectionnez
 SI PAS gbPdfCreatorDemarre ALORS
   //Allocation de l'objet PDFCreator : si il est déjà démarré, on l'utilise.
   MonPDF = ObjetActif("PDFCreator.clsPDFCreator")
   SI MonPDF=Null ALORS
      MonPDF=allouer un objet OLE "PDFCreator.clsPDFCreator" 
      ErreurPDF = ObjetActif("PDFCreator.clsPDFCreatorError") // On alloue un objet pour gérer les erreurs.
      MesOptionsPDF =ObjetActif("PDFCreator.clsPDFCreatorOptions") // On alloue un objet pour gérer les options.
      AutomationEvénement(Eve_PDFCreator_eReady,MonPDF,"eReady") // Les deux procédures de gestion des évenements PDFCreator. 
	                                                             // -eReady = Pret et dispo pour doc suivant 
      AutomationEvénement(Eve_PDFCreator_eError,MonPDF,"eError") // -eError = Probleme avec PDFCreator
   FIN
FIN
SI PAS MonPDF>>cProgramIsRunning ALORS
   SI MonPDF>>cStart("/NoProcessingAtStartup", Vrai) = Faux ALORS
      Erreur("Impossible d'initialiser PDFCreator.")
      RETOUR
   FIN
   gbPdfCreatorDemarre = Vrai
SINON
   gbPdfCreatorDemarre = Vrai
FIN

Les différentes fonctions utilisées sont très bien décrites dans l'aide de PDF Creator, et tout fonctionne tres bien.

Dans mon code, j'utilise deux méthodes AUTOMATIOnEvenement, ceci avec un résultat mitigé : la méthode Eve_PDFCreator_eReady est censé renvoyé vrai quand le traitement en cours est terminé, mais je n'ai pas réussi à la faire fonctionner correctement. il faudra creuser ce point. Je m'y pencherai dès que j'aurais un peu de temps.

Ensuite il vous est possible de modifier différents parametres de PDF Creator, il y en a une quantité non négligeable, mais en gros, le principe est le meme :

 
Sélectionnez
MonPDF>>cVisible = Faux //Rend PDF Creator invisible
MonPDF>>cOption("AutosaveFormat") = 0 //Format PDF
MonPDF>>cOption("UseAutosave") = 1 //Sauvegarde automatique
MonPDF>>cOption("UseAutosaveDirectory") = 1 //Utilisation du repertoire sauvegardé.
MonPDF>>cDefaultprinter = "PDFCreator" //Affecte l'imprimante PDF comme imprimante par défaut
MonPDF>>cClearCache

Pour modifier l'imprimante en cours et la restaurer ensuite par exemple :

 
Sélectionnez
DefaultPrinter=iInfoImprimante(Faux)
iConfigure("PDFCreator",Faux)

et à la fin du traitement, vous la restaurez.

 
Sélectionnez
MonPDF>>cDefaultprinter = DefaultPrinter

Ensuite exemple de traitement fichier par fichier, mais vous pouvez aussi envoyer toute une liste de fichier en file d'attente...

 
Sélectionnez
// Conversion PDF
sNomCompletFichieraConvertir = sRepertoireNonPDFlocal+"\"+sNomCompletFichier
SI PAS MonPDF>>cIsPrintable(sNomCompletFichieraConvertir) ALORS
   //Traitement erreur ....
SINON
   MonPDF>>cPrinterStop = Faux
   MonPDF>>cOption("AutosaveDirectory") = sRepertoirePDFlocal
   MonPDF>>cOption("AutosaveFilename") = fExtraitChemin(sNomCompletFichieraConvertir,fFichier)
   MonPDF>>cPrintfile(sNomCompletFichieraConvertir)
FIN

cPrinterStop permet de suspendre ou non la file d'attente d'impression... si il est à vrai , vous "empilez" vos fichiers dans le spooler jusqu'à ce que vous repassiez à Faux cPrinterStop...

Voila, il est bien entendu possible d'affiner encore, mais cette méthode fonctionne bien et est en production actuellement, sans probleme particulier. Je précise, dans mon cas, il s'agit de convertir différents types de documents en PDF et de les stocker dans un répertoire mais le principe est exactement le même pour imprimer des PDF...

En espérant vous avoir donné des pistes. J'ai utilisé cet outil après de nombreuses recherches sur les différents forums et pour rendre à César ce qui est à César , la base de ma procédure est largement inspirée d'un fil de discussion trouvé sur un forum. (je ferais une petite recherche pour faire apparaitre le nom de son auteur originel...

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 Laurent BELLET. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.