Guten Morgen Miteinander!
Ich schreibe gerade ein Email/Anhang-Importapplikation von Lotus Notes in unser Dokumentmanagementsystem(Hummingbird eDocs). Dabei benutzte ich die COM-Schnittstelle von Lotus Notes, um das Dokument auf den PDFCreator zu drucken und somit ein PDF zu erzeugen.
Funktion:
''' <summary>
''' Druckt das Notesdokument über die NotesOberfläche auf dem PDFCreator Drucker aus.
''' </summary>
''' <remarks></remarks>
Private Function _DruckeNotesDokument(ByVal _UNID as String) As Boolean
Try
'****************************************************
'Drucke Dokument
'****************************************************
Dim NotesUIWorkspaceType As Type = Type.GetTypeFromProgID("Notes.NotesUIWorkspace")
Dim workspace As Object
'Erstelle NotesObjekt
workspace = Activator.CreateInstance(NotesUIWorkspaceType)
'Öffne MailDatenbank
Dim arg() As String = {_UNID}
Dim uidb As Object = NotesUIWorkspaceType.InvokeMember("CurrentDatabase", System.Reflection.BindingFlags.GetProperty, Nothing, workspace, Nothing)
Dim db As Object = NotesUIWorkspaceType.InvokeMember("Database", System.Reflection.BindingFlags.GetProperty, Nothing, uidb, Nothing)
'Hole Dokument mit der UNID
Dim doc As Object = NotesUIWorkspaceType.InvokeMember("GetDocumentByUNID", System.Reflection.BindingFlags.InvokeMethod, Nothing, db, arg)
Dim dokIstSchonOffen As Boolean = NotesUIWorkspaceType.InvokeMember("ISUIDOCOPEN", System.Reflection.BindingFlags.GetProperty, Nothing, doc, Nothing)
'Öffne Dokument zum Editieren
Dim Arguments2() As Object = {False, doc, True, "", True, False}
Dim Resul As Object = NotesUIWorkspaceType.InvokeMember("Editdocument", System.Reflection.BindingFlags.InvokeMethod, Nothing, workspace, Arguments2)
System.Threading.Thread.Sleep(100)
'Drucke Dokument auf dem NotesToDMS Drucker
Dim arg3() As Object = {1, Nothing, Nothing, Nothing, "PDFCreator"}
NotesUIWorkspaceType.InvokeMember("PRINT", System.Reflection.BindingFlags.InvokeMethod, Nothing, Resul, arg3)
If dokIstSchonOffen = False Then
System.Threading.Thread.Sleep(100)
Dim arg4() As Object = {True}
NotesUIWorkspaceType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, Nothing, Resul, arg4)
End If
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
Das funktioniert auf meine Computer soweit sogut, sobald ich aber zu den Computern einiger Mitarbeiter wechsle, kommt folgende Fehlermeldung im Lotus Notes:
Unter Details steht einfach "Fehler"
Auf allen Computern ist WinXP oder Win7 installiert, wobei der Fehler unabhängig des Betriebssystems auftritt.
Lotus Notes Version ist auf allen Computern 8.5.2 FP2
Es ist ziemlich verwirrend, denn der Fehler tritt bei einigen Leuten auf, bei anderen nicht.
Das Verhältnis zwischen funktioniert und Fehler liegt bei ca. 3:5.
Ich konnte keine Regelmässigkeit feststellen.
Ich hoffe ihr könnt mir helfen.
Gruss Toni