Page 1 sur 1

MessagePublié: 18 Déc 2009 à 11:15
par sakini
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 ...

MessagePublié: 18 Déc 2009 à 11:23
par Michael DELIQUE

MessagePublié: 29 Déc 2009 à 12:08
par kn2
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 :)

MessagePublié: 29 Déc 2009 à 12:16
par Michael DELIQUE
tu n'as pas d'imprimante par défaut ?.

MessagePublié: 29 Déc 2009 à 13:47
par kn2
Si j'ai bien une imprimante par défaut, d'ailleurs il la trouve bien par la fonction PrinterDefautGet() que tu as écrite.

MessagePublié: 29 Déc 2009 à 13:51
par Michael DELIQUE
il faudrait voir du coté des drivers de l'imprimante ou de Win32_Printer / Win32_Printerconfiguration

MessagePublié: 29 Déc 2009 à 14:21
par kn2
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 ?

MessagePublié: 29 Déc 2009 à 14:24
par Michael DELIQUE
je ne sais pas, il faut récupérer la liste des noms d'imprimante et regarder l'orthographe exact

MessagePublié: 29 Déc 2009 à 14:34
par kn2
ok merci, je vais voir de ce coté là alors :)

MessagePublié: 29 Déc 2009 à 15:18
par kn2
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 :)

MessagePublié: 29 Déc 2009 à 15:21
par Michael DELIQUE
ç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 ?;

MessagePublié: 29 Déc 2009 à 16:57
par kn2
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 ?

MessagePublié: 29 Déc 2009 à 17:01
par Michael DELIQUE
j'ai déplacé ton probleme dans le forum adéquate