Pb d'imprimante par défaut avec pdfcreator

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Messagepar sakini » 18 Déc 2009 à 11:15

Bonjour
J'utilise PDFCreator avec une version 5 de lotus (et oui certain client en sont toujoiurs la)
Mon script fonctionne sauf que en V5 il n'ya pas moyen de définir une imprimante c'est forcement l'imprimante par defaut.
J'arrive a changer l'imprimant par defaut dans lotus avant de lancer l'impression sauf que lotus n'en tien pas compte

si quelqu'un a déja contourné ce probleme ...
sakini
Posteur néophyte
Posteur néophyte
 
Message(s) : 54
Inscrit(e) le : 18 Jan 2009 à 09:39

Messagepar Michael DELIQUE » 18 Déc 2009 à 11:23

Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar kn2 » 29 Déc 2009 à 12:08

Bonjour, j'ai le même problème que sakini, j'ai essayé d'utiliser la fonction PrinterDefautSet indiqué dans le lien de Michael mais quand je veux l'utiliser j'ai un message qui indique que
"instance member SETDEFAULTPRINTER does not exist"
Comme je ne connais pas trop comment sont gérer les imprimantes, faut-il inclure un fichier ou qqchose dans ce genre pour que cette fonction puisse fonctionner ?
Merci :)
kn2
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 27 Oct 2005 à 16:37

Messagepar Michael DELIQUE » 29 Déc 2009 à 12:16

tu n'as pas d'imprimante par défaut ?.
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar kn2 » 29 Déc 2009 à 13:47

Si j'ai bien une imprimante par défaut, d'ailleurs il la trouve bien par la fonction PrinterDefautGet() que tu as écrite.
kn2
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 27 Oct 2005 à 16:37

Messagepar Michael DELIQUE » 29 Déc 2009 à 13:51

il faudrait voir du coté des drivers de l'imprimante ou de Win32_Printer / Win32_Printerconfiguration
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar kn2 » 29 Déc 2009 à 14:21

Peut-être que je l'utilise mal en fin de compte, je ne sais pas

en fait je veux mettre PDFCreator en imprimante par défaut, donc je lance :
Call PrinterDefautSet("PDFCreator")
et après ça j'ai le message d'erreur que j'ai indiqué précédemment

Est ce que c'est bien le nom a mettre en paramètre pour avoir PDFcreator en imprimante par défaut ?
kn2
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 27 Oct 2005 à 16:37

Messagepar Michael DELIQUE » 29 Déc 2009 à 14:24

je ne sais pas, il faut récupérer la liste des noms d'imprimante et regarder l'orthographe exact
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar kn2 » 29 Déc 2009 à 14:34

ok merci, je vais voir de ce coté là alors :)
kn2
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 27 Oct 2005 à 16:37

Messagepar kn2 » 29 Déc 2009 à 15:18

Alors, je viens de vérifier pour PDFCreator, le nom que je passe en paramètre est correcte, d'autant plus que dans le code, la commande Call objPrinter.SetDefaultPrinter() ne s'exécute que si le printer name = au paramètre de la fonction.
Du coup il doit bien me manquer quelque chose pour que la commande Call objPrinter.SetDefaultPrinter() s'exécute correctement masi je ne vois pas trop quoi :(


J'ai vu dans le code qui est au début de ce post que PDFCreator permettait de se mettre en imprimante par défaut
Code : Tout sélectionner
REM Objet qui gère l'impression
   Set vrPDFCreator = CreateObject("PDFCreator.clsPDFCreator")   
   Set PrtNamesColl = vrPDFCreator.cGetPDFCreatorPrinters()
   
   If vrPDFCreator.cProgramIsRunning Then
      cStartedFlag = True
   Else
      cStartedFlag = vrPDFCreator.cStart(  , True)
   End If
   
   If cStartedFlag = False Then
      Msgbox("CreatePDF - PDFCreator failed to start or not installed. Process halted.")
      Goto skip
   End If
   
   ' Grab the current options for restoration later.
   Set PDFCreatorOptions = vrPDFCreator.cOptions
   
   With vrPDFCreator
         REM Passe L'imprimante PDFCreator en imprimante par défaut
      .cDefaultprinter = Cstr(PrtNamesColl.Item(1))

ça fonctionne bien pour Windows mais Lotus Notes ne le prends pas en compte, j'ai l'impression qu'il garde constamment l'imprimante qui était par défaut lors de l'ouverture de la session Lotus Notes.
est ce que c'est bien comme ça que réagis notes ?
Est ce que la fonction PrinterDefautSet qur tu as écrite Michael permet à Lotus Notes de prendre en compte la nouvelle imprimante par défaut ?

Merci par avance de ton aide :)
kn2
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 27 Oct 2005 à 16:37

Messagepar Michael DELIQUE » 29 Déc 2009 à 15:21

ça change l'imprimante par défaut de windows, quand au code de pdfcreator, je l'ai déjà utilisé il change bien l'imprimante par défaut

as tu vérifié que tu avais bien tous les droits ?;
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar kn2 » 29 Déc 2009 à 16:57

ahhh !!! je crois que je vais devenir fou !!!!

Il y a quelque chose qui m'échappe vraiment là :cry:

pour qu'il n'y ai pas d'ambiguité, je vais mettre tout le code (qui ressemble beaucoup au code d'origine qui est en ce début de post) que j'ai mis dans un bouton de formulaire :
Code : Tout sélectionner
Sub Click(Source As Button)
   On Error Goto ErrorHandler
   
   Dim sDefaultPrinter As String, spdfname As String
   Dim ws As New notesuiworkspace()
   Dim vrPDFCreator As Variant, PrtNamesColl As Variant
   Dim doc As notesdocument
   Dim cStartedFlag As Boolean, PrinterReset As Boolean
   Dim UIDocToPrint As NotesUIDocument, uidoc As NotesUIDocument
   Dim PDFCreatorOptions As Variant ' PDFCreator options to restore.
   
   Set uidoc = ws.currentdocument
   Set doc = uidoc.Document
   
   uidoc.EditMode=False
   
   
   REM Récupère l'imprimante par défaut
   sDefaultPrinter = PrinterDefautGet()
   
   
   REM Objet qui gère l'impression
   Set vrPDFCreator = CreateObject("PDFCreator.clsPDFCreator")   
   Set PrtNamesColl = vrPDFCreator.cGetPDFCreatorPrinters()
   
   If vrPDFCreator.cProgramIsRunning Then
      cStartedFlag = True
   Else
      cStartedFlag = vrPDFCreator.cStart(  , True)
   End If
   
   If cStartedFlag = False Then
      Msgbox("CreatePDF - PDFCreator failed to start or not installed. Process halted.")
      Goto skip
   End If
   
   ' Grab the current options for restoration later.
   Set PDFCreatorOptions = vrPDFCreator.cOptions
   
   With vrPDFCreator
         REM Passe L'imprimante PDFCreator en imprimante par défaut
      .cDefaultprinter = Cstr(PrtNamesColl.Item(1))
      
      REM Set and save the PDFCreator options.
      .cClearCache
      .cOption("UseAutosave") = 1
      .cOption("UseAutosaveDirectory") = 1
      .cOption("AutosaveDirectory") = Environ("Temp")
      .cOption("AutosaveFilename") = Cstr(doc.UniversalID())
      .cOption("AutosaveFormat") = 0
      .cOption("AutosaveStartStandardProgram" ) = 0
      .cOption("NoConfirmMessageSwitchingDefaultprinter") = 0
   End With
   
   Call vrPDFCreator.cSaveOptions()
   
   Set UIDocToPrint = ws.EditDocument(False, Doc, True , "" , True , True)
   'Call UIDocToPrint.Print(1 ,  ,  ,  PrtNamesColl.Item(1))
   Call UIDocToPrint.Print(1 )
   Call UIDocToPrint.Close(True)
   
   
   
   spdfname = Environ("Temp") +"\"+ Cstr(doc.UniversalID()) + ".pdf"
   
   REM Wait for print job to complete.
   Dim counter As Integer
   Counter = 0
   Do Until (vrPDFCreator.cCountOfPrintJobs = 0 And Dir(spdfname) <> "" ) Or Counter = 30
      Yield
      Sleep 1
      Yield
      Counter = Counter + 1
   Loop
   
   If Counter = 30 Then
      Msgbox ("CreatePDF - PDF Conversion never completed.  Process halted.")
      Goto skip
   End If
   
skip:
   With vrPDFCreator
      REM Blocage de l'imprimante
      .cPrinterStop = True
      
        REM remet l'imprimante par défaut d'origine
      .cDefaultprinter = sDefaultPrinter
      
         REM Vide le Cache de PDFCreator
      .cClearCache
   End With
   
   REM Restore and save original options, then close PDFCreator only if it had been started by this sub.
   Set vrPDFCreator.cOptions = PDFCreatorOptions
   
   REM Ferme l'application PDFCreator
   Call vrPDFCreator.cSaveOptions()
   Call vrPDFCreator.cClose
   
   'Call RTIForAttachment.EmbedObject (EMBED_ATTACHMENT , "" ,  spdfname)
   'Kill spdfname
   
   Call doc.Save(True, False)
   Call uidoc.Close(True)
   Call ws.EditDocument(True, doc)
   
   Exit Sub   
ErrorHandler:
   
   If Datatype(vrPDFCreator) <> 0 Then
      
      If Err = 4412 Then
         Call UIDoc.Close( True )
         Sleep 3
      End If
      
      Call vrPDFCreator.cErrorClear()
      
      If PrinterReset And sDefaultPrinter <> Cstr( PrtNamesColl.Item(1)) Then
         vrPDFCreator.cDefaultPrinter = Cstr( PrtNamesColl.Item(1))
         vrPDFCreator.cDefaultPrinter = sDefaultPrinter
      End If
      
      Set vrPDFCreator.cOptions = PDFCreatorOptions
      Call vrPDFCreator.cSaveOptions()
      Call vrPDFCreator.cClose()
   Else
      Msgbox "PDFCreator pas installé. Veuillez contacter votre répondant informatique."
      Exit Sub
   End If
   
   'Msgbox " -> Error " & Err & " in line " & Erl & ": " & Error$, 64, "Error"
   Exit Sub
End Sub


Je ne comprends pas la logique de lotus , je m'explique, lorsque je lance ce code en débug, je vois bien dans windows en suivant la liste des imprimante que mon imprimante par défaut change pour passer sur PDFCreator (cool) mais lorsque notes imprime le document courrant, c'est mon ancienne imprimante par défaut qui imprime mon document.

J'ai même essayé de voir si l'imprimante par défaut avait bien changé en lançant une autre application windows , et PDFCreator est bien reconnu comme imprimante par défaut.

En ce qui concerne les droits, mon poste a des droits administrateur, mais au niveau de lotus, je ne sais pas.
Je suis sous lotus 6.5, est ce que ça pourrait être ça le problème ?
kn2
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 27 Oct 2005 à 16:37

Messagepar Michael DELIQUE » 29 Déc 2009 à 17:01

j'ai déplacé ton probleme dans le forum adéquate
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy


Retour vers Développement

cron