IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Impression et conversion PDF avec PDF Creator


Sujet :

Contribuez

  1. #1
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2010
    Messages : 125
    Points : 399
    Points
    399
    Par défaut Impression et conversion PDF avec PDF Creator
    Bonjour,

    Suite à un fil de discussion sur le sujet sur ce forum, je vous propose une solution d'impression et de conversion de documents PDF à l'aide de PDF Creator
    Tout d'abord, le lien vers la discussion qui m'a amené à vous proposer d'ajouter ma pierre à l'édifice :
    http://www.developpez.net/forums/d86...mante-louvrir/

    Cet outil est un freeware, donc pas de souci de licence. Vous pouvez le télécharger ici :
    http://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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    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.
    ATTENTION : 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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DefaultPrinter=iInfoImprimante(Faux)
    iConfigure("PDFCreator",Faux)
    et à la fin du traitement, vous la restaurez.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonPDF>>cDefaultprinter = DefaultPrinter
    Ensuite exemple de traitement fichier par fichier, mais vous pouvez aussi envoyer toute une liste de fichier en file d'attente...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // 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...

    Voilà, 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...)

    Je suis bien entendu à votre disposition pour toutes suggestions ou discussions, débats, critiques....

    Très cordialement,

    Laurent.

  2. #2
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut Classe Windev de gestion de PDFCreator (Interface COM)
    Bonjour,

    J'ajoute ci-joint ma petite contribution sous forme de classe Windev (testée et approuvée).

    L'appel se fait de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sFichierChemin est une chaîne = "c:\MonFichier.RTF"
    oPDFCreator est un Cla_PDFCreator
    oPDFCreator:ImpressionRapide(sFichierChemin,"c:\")
    Petit truc pour empêcher l'affichage de la fenêtre de mise à jour automatique, qui peut bloquer l'exécution de la conversion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SI RegistreExiste("HKEY_CURRENT_USER\Software\PDFCreator\Program") ALORS
    	RegistreEcrit("HKEY_CURRENT_USER\Software\PDFCreator\Program","UpdateInterval",0)
    FIN
     
    SI RegistreExiste("HKEY_LOCAL_MACHINE\SOFTWARE\PDFCreator\Program") ALORS
    	RegistreEcrit("HKEY_LOCAL_MACHINE\SOFTWARE\PDFCreator\Program","UpdateInterval",0)
    FIN
    Images attachées Images attachées

  3. #3
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2010
    Messages : 125
    Points : 399
    Points
    399
    Par défaut Petit complément
    Bonjour,

    Tout d'abord, merci pour cette classe, qui peut être très utile
    Concernant l'exploitation de mon exemple, je tiens à préciser que cela ne fonctionne que si l'on installe pas PDFCreator en mode serveur. Toutes les commandes qui permettent de rediriger vers un répertoire différent ne sont plus utilisable dans ce cas.

    Voilà

    Cordialement,
    Laurent

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Merci à toi
    Merci à toi pour cette classe qui m'a tout simplement facilité la vie.
    Développement vôtre,

    Adrien.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    Heu...
    C'est possible d'envoyer un état vers cette classe ?
    Ou même simplement de paramétrer l'imprimante avec cette classe, puis lancer l'impression sur l'imprimante ?

    J'avoue que j'aimerai bien un petit guidage, car je suis un peu paumé...

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour à toutes et tous,

    ce code marche dans les versions de windev supérieure à 7.0.
    MAIS, j'ai encore une application en Windev 5.5 et là cela ne marche pas.
    En windev5.5 il n'existe pas d'impression en PDf natif , donc on est obliger de passer par une imprimante virtuelle tiers.
    En modifiant la base de registre on arrive à piloter pdfcreator (et a faire la même chose), mais passer par l'objet com c'est quand même mieux.

    Si qqu à une idée sur le sujet.

    merci.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Classe PDF
    Bonjour,

    Merci pour la classe.

    n'étant pas encore expérimenté dans ce domaine, cela m'a bien aidé à comprendre le fonctionnement.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1
    Points : 0
    Points
    0
    Par défaut
    en conversion de fichier image (jpg, bmp) j'ai l'erreur suivante avec le mode debug de la classe :


    Cla_PDFCreator:isImprimable() : <\r><\n> (0)<\r><\n>

  9. #9
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut Sauvegarder un document vers le format PDF avec les fonctions OLE d'Open Office
    Voir aussi http://www.developpez.net/forums/d14...d-open-office/

    Pour convertir un document vers le format PDF avec les fonctions OLE d'Open Office.

  10. #10
    Expert éminent sénior
    Avatar de Lana.Bauer
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5 382
    Points : 12 109
    Points
    12 109
    Par défaut
    Bonjour,

    Merci de vous conférer au post-it : A quoi sert ce forum ?

    Pourquoi ne pas s'aider ensemble pour rédiger un petit tutoriel sur ce sujet ?

    Merci à tous.

    Des volontaires ?

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut Avec la version 2 de PdfCreator il faut tout revoir
    Bonjour,

    Je ne développe pas avec WinDev mais je n'ai rien contre cette communauté de développeurs, j'étais à la recherche d'informations actualisées sur le composant COM de PdfCreator Version 2 lorsque j'ai trouvé cette discussion sur mon forum préféré.
    J'ai donc pensé qu'il pourrait être utile de prévenir que les classes et propriétés présentées dans cette discussion ont disparues dans la version 2.0 de PdfCreator.

    Sans doute plus riche, le nouveau modèle n'a plus rien à voir avec celui de la version 1.7.3 (dernière dont je dispose en V1).
    De plus, la documentation associée présente un objet PdfCreatorBeta dont on ne retrouve pas les mêmes propriétés lorsqu'on explore l'objet COM livré avec le téléchargement de la V2!
    A moins que je n'ai loupé quelque chose...?

    Si quelqu'un a trouvé une documentation correcte sur le composant COM de la version 2 ce serait sympa de nous proposer un lien.
    Accessoirement si quelqu'un peut fournir un lien de téléchargement de la Version 1 (histoire de maintenir les applications actuelles en attendant d'implémenter les objets de la V2).

    Je développe essentiellement en VBA et en VB.NET mais ça ne change rien aux caractéristiques du composant COM, enfin, je crois...

    Merci pour vos réponses.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Insertion Auto
    Bonjour,

    Tout d'abord merci pour cette classe qui est vraiment bien utile =).

    Cependant lors d'une conversion de fichier txt il y a un ajout automatique du nom du fichier en haut de page et d'un texte "Pge p" en bas de page.

    Y'a t-il un moyen de ne pas avoir cet ajout de texte ?

    Merci d'avance

    Cordialement.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Je me réponds
    Et bien je vais me répondre tout seul comme un grand ( si ça peut aider quelqu'un x) ).

    Donc l'ajout automatique du nom du fichier et du texte "Pge P" est dût au bloc note utilisé lors de la conversion(petit farceur) ==> aller dans le bloc note ==> fichier ==> mise en page ==> supprimer l'entête et le pied de page.

    Pour répondre à Depite le site de pdfcreator nous fournis bien les informations sur l'interface com : http://docs.pdfforge.org/pdfcreator/...e/user-manual/

    Sinon voici le code que j'utilise pour la méthode "Conversion" de la classe PDFCreator 2.1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    PROCEDURE Convertion(fullpath, NomFic,Cheminfic)
     
    //envoyer le fichier au spooleur d'impression
     
    LanceAppliAssociée (Cheminfic, "print") // ==> imprimante par défault 
    //OU
    LanceAppli("C:\Windows\notepad.exe /PT " +  Caract(34) + Cheminfic + Caract(34) + " " + Caract(34) + "PDFCreator" + Caract(34)) // ==> Imprimante spécifique : ici PDFCreator 
     
     
    SI PAS PDFCreatorQueue>>WaitforJob(10) ALORS 
    	rec = rec + (RC +"Temps écoulé" + RC )
    SINON 	
    	job = PDFCreatorQueue>>NextJob
    	//info(PDFCreatorQueue>>Count + fullpath)
    	TANTQUE (PDFCreatorQueue>>Count > 0)
    		job>>SetProfileByGuid("DefaultGuid")
    		job>>ConvertTo(fullpath + NomFic)
    		SI PAS (job>>IsFinished) OU PAS job>>IsSuccessful ALORS 
    			rec = rec + " : Erreur"  +RC 
    		FIN	
    			rec = rec + " : OK" + RC 
     
    	FIN 
    FIN
    PDFCreatorQueue>>ReleaseCom();
    En espérant avoir été utile.

    Cordialement.

Discussions similaires

  1. transformation fichier PDF avec PDF CREATOR
    Par F@bien.fd dans le forum Langage
    Réponses: 1
    Dernier message: 10/09/2012, 09h34
  2. conversion HTML en PDf via PDf Creator
    Par Dan971 dans le forum C#
    Réponses: 1
    Dernier message: 19/12/2011, 23h57
  3. Créer un PDF avec PDF Creator ou Adobe Acrobat 8
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/07/2008, 12h46
  4. Conversion XML vers PDF avec ITEXT
    Par adelpiero dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 29/07/2008, 11h16
  5. Tutorial generation pdf , avec pdf creator
    Par Nicko29 dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/07/2007, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo