Woher kann der Fehler "Active-X-Server not started" kommen ??
Folgendes Programm führt - MANCHMAL(!) - zum o.a. Fehler:
' PDFcreator starten
If PDFC Is Nothing Then
PDFC = New PDFCreator.clsPDFCreator
End If
PDFC.cStart("/NoProcessingAtStartup", True)
PDFC.cClearCache()
PDFC.cPrinterStop = False
PDFC.cOption("UseAutosave") = 1
PDFC.cOption("AutosaveFilename") = SelectedMail.EntryID & ".pdf"
PDFC.cOption("UseAutosaveDirectory") = 1
PDFC.cOption("AutosaveDirectory") = gUserApplPath & "\temp"
PDFready = False
PDFdone = False
PDFC.cIsConverted = False
Woran kann das liegen?
Wie kann ich das absichern?
VIELEN DANK FÜR TIPS !!!
Sigi
Leider weiss ich die Zeile auch nicht :-( -der Fehler tritt wohl nur bei einem sehr langsamen PC auf(?); ich habe daher bereits Code eingefügt, weil es gelegentlich vorkam, daß die Änderung des Standarddruckers nicht erfolgt war und Outlook dann auf den physischen Drucker anstelle von PDFcreator gedruckt hat...
Danke !
Sigi
Hier nun die ganze Klasse (damit wird ein markiertes Mail aus Outlook in PDF konvertiert): (ich habe nur einige wenige Control-Strukturen weggelassen; z.B. das warten auf PDFready etc.)
Public Class Mail2pdf
Private WithEvents PDFC As PDFCreator.clsPDFCreator
Public SavedAttFile As String
Private PDFready As Boolean
Private lDefaultPrinter As String
Public Sub New(ByVal SelectedMail As Object)
Trace.WriteLine("Start PDF-Konvertierung")
Try
' PDFcreator starten
PDFC = New PDFCreator.clsPDFCreator
PDFC.cStart("/NoProcessingAtStartup", True)
PDFC.cClearCache()
PDFC.cPrinterStop = False
PDFC.cOption("UseAutosave") = 1
PDFC.cOption("AutosaveFilename") = SelectedMail.EntryID & ".pdf"
PDFC.cOption("UseAutosaveDirectory") = 1
PDFC.cOption("AutosaveDirectory") = gUserApplPath & "\temp"
PDFready = False
PDFC.cIsConverted = False
' Standarddrucker ändern
Dim Printer As New System.Drawing.Printing.PrinterSettings
If Printer.IsDefaultPrinter Then lDefaultPrinter = Printer.PrinterName
Dim wshnetwork As Object = CreateObject("WScript.Network")
retry: wshnetwork.SetDefaultPrinter("PDFCreator")
' prüfen, ob Änderung erfolgreich war
Trace.WriteLine("Defaultprinter=" & lDefaultPrinter)
System.Windows.Forms.Application.DoEvents()
System.Threading.Thread.Sleep(300)
Dim PrinterTest As New System.Drawing.Printing.PrinterSettings
Trace.WriteLine(PrinterTest.PrinterName & ", isDefault=" & PrinterTest.IsDefaultPrinter)
If PrinterTest.PrinterName <> "PDFCreator" Then
If MsgBox("Standarddrucker konnte nicht gesetzt werden", MsgBoxStyle.RetryCancel, "Mail2Pdf") = MsgBoxResult.Retry Then GoTo retry
GoTo exitsub
End If
' Mail drucken
SelectedMail.PrintOut()
' Fertig oder abgebrochen ?
If PDFC.cOutputFilename <> "" And PDFC.cIsConverted = True Then
PDFready = True
End If
' Dateinamen zurückgeben
If PDFready Then
SavedAttFile = gUserApplPath & "\temp\" & SelectedMail.EntryID & ".pdf"
End If
' Standarddrucker zurückändern
wshnetwork.SetDefaultPrinter(lDefaultPrinter)
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Exclamation Or MsgBoxStyle.OKOnly, "Error: Save as ...")
GoTo exitsub
End Try
exitsub:
Try
' PDFcreator beenden
PDFC.cClose()
System.Runtime.InteropServices.Marshal.ReleaseComObject(PDFC)
GC.Collect()
Catch ex As Exception
End Try
End Sub
Public Sub PDFC_eReady() Handles PDFC.eReady
' PDF erfolgreich erstellt
PDFready = True
End Sub
Private Sub pdfc_eError() Handles PDFC.eError
' Fehler in PDFcreator
MsgBox(PDFC.cError.Number & " " & PDFC.cError.Description, MsgBoxStyle.Critical, "Fehler in PDFCreator")
End Sub
End Class
Gibt es keinen Tip, wo und wie ich etwas absichern müsste oder könnte ?
Problem hat sich erledigt - habe für das Projekt einen anderen Konverter gefunden (www.bioPDF.com), der wesentlich stabiler läuft und meine Probleme löst.
Auch wenn Du Dich schon für ein anderes Produkt entschieden hast, möchte ich trotzdem antworten. Das Problem liegt höchstwahrscheinlich daran, dass der PDFCreator auf einem sehr langsamen Rechner läuft. PDFCreator ist ein ActiveX-Exe-Server und wird über die Com-Funktion cStart() gestartet. Dieses Starten erfolgt asynchron. Wenn jetzt der Server noch nicht vollständig geladen ist und vorher schon der nächste Befehl erfolgt, kann es zu dieser Fehlermeldung kommen. Möglicherweise hilft in diesem Fall ein Wait\Sleep nach dem cStart().


In welcher Zeile erfolgt der Fehler? Und kann man etwas mehr Code bekommen? Insbesondere was davor noch passiert. Ich hatte diesen Fehler noch nie.
Frank
Team pdfforge