Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Membre confirmé
    Homme Profil pro Laurent BELLET
    Consultant informatique
    Inscrit en
    janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent BELLET
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2010
    Messages : 120
    Points : 203
    Points
    203

    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 :
    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 :
    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 :
    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 :
    1
    2
    3
     
    DefaultPrinter=iInfoImprimante(Faux)
    iConfigure("PDFCreator",Faux)
    et à la fin du traitement, vous la restaurez.
    Code :
    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 :
    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 régulier
    Inscrit en
    août 2005
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 65
    Points : 86
    Points
    86

    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 :
    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 :
    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
    Fichiers attachés Fichiers attachés

  3. #3
    Membre confirmé
    Homme Profil pro Laurent BELLET
    Consultant informatique
    Inscrit en
    janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent BELLET
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2010
    Messages : 120
    Points : 203
    Points
    203

    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
    Invité de passage
    Inscrit en
    juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : juin 2004
    Messages : 6
    Points : 2
    Points
    2

    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 émérite
    Homme Profil pro Joël
    Inscrit en
    mars 2002
    Messages
    890
    Détails du profil
    Informations personnelles :
    Nom : Homme Joël
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : mars 2002
    Messages : 890
    Points : 959
    Points
    959

    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
    Invité de passage
    Profil pro jf B.E
    Inscrit en
    octobre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : jf B.E

    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
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    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
    Invité de passage
    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 régulier
    Inscrit en
    août 2005
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 65
    Points : 86
    Points
    86

    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
    Community Manager

    Avatar de Lana.Bauer
    Femme Profil pro Lana Bauer
    Administrateur systèmes et réseaux
    Inscrit en
    novembre 2012
    Messages
    3 821
    Détails du profil
    Informations personnelles :
    Nom : Femme Lana Bauer
    Localisation : Allemagne

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

    Informations forums :
    Inscription : novembre 2012
    Messages : 3 821
    Points : 7 584
    Points
    7 584

    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 ?
    Cordialement
    Lana
    Community Manager

  11. #11

    Homme Profil pro miki bino
    Chargé de référencement
    Inscrit en
    juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Nom : Homme miki bino
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : Biens de consommation

    Informations forums :
    Inscription : juin 2014
    Messages : 2
    Points : -1
    Points
    -1

    Par défaut

    Bonjour,
    Merci pour la classe. MAIS, j'ai encore une application en Window 7 et là cela ne marche pas. Je ne sais pas pour quoi. Mon PDF creator ne fonction pas. C'est très bizare.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •