It looks like you're new here. If you want to get involved, click one of these buttons!
I'm using the PDFCreator COM object in a VB.NET service. I had to do a standard installation to get the PDFCreator working, but it does create the .tif files now. However, now when I try to do _PDFCreator.cClose() the application appears to just hang. Has anyone ran into this before?
Any help would be appreciated.
This is a common problem. There were a few suggestions in the old forums, which had varying results for different people. I posted a solution that I thought would work in all situations - unfortunately, I didn't get a chance to see if anyone commented on my solution before the forums were lost.
I don't remember exactly what I found as the "magic bullet" that fixed the problem.
I added a few DoEvents and some wait timers ... I think specifically it was the placement of a DoEvent (VB6) that seemed to resolve the issue.
Sorry I can't be more help. I had a pretty good write up about this problem before the Forums got fragged.
Here is my code for Word 2003 VBA COM:
Private WithEvents PDFCreator1 As PDFCreator.clsPDFCreator
Private FileSaved As Boolean, ReadyState As Boolean, DefaultPrinter As String, LoopCount As Long
Public Sub SaveWholeDocumentAsPDF(Filename As String) FileSaved = False If Len(ActiveDocument.Path) = 0 Then MsgBox "Please save the document first!", vbExclamation Exit Sub End If Set PDFCreator1 = New clsPDFCreator With PDFCreator1 If .cStart("/NoProcessingAtStartup") = False Then MsgBox "Can't initialize PDFCreator." Exit Sub End If DefaultPrinter = ActivePrinter SetPrinter "PDFCreator" End With
With PDFCreator1 .cOption("UseAutosave") = 1 .cOption("UseAutosaveDirectory") = 1 .cOption("AutosaveDirectory") = ActiveDocument.Path .cOption("AutosaveFilename") = Filename .cOption("AutosaveFormat") = 0 ' 0 = PDF .cOption("Papersize") = "Letter" .cClearCache DoEvents ActiveDocument.PrintOut Background:=False DoEvents .cPrinterStop = False End With
SetPrinter DefaultPrinter LoopCount = 0 Do Until FileSaved = True If LoopCount >= 100 Then 'End loop after approx 25 seconds MsgBox "Loop has run for more than 25 seconds - Cannot close PDFCreator" PDFCreator1.cPrinterStop = True PDFCreator1.cClearCache Exit Do End If DoEvents Sleep 250 LoopCount = LoopCount + 1 Loop DoEvents 'Just to be ABSOLUTELY sure that PDFCreator is ready to close! Sleep 250 'Wait another 1/4 of a second PDFCreator1.cClose Set PDFCreator1 = Nothing Sleep 250 DoEventsEnd Sub
Private Sub PDFCreator1_eError() MsgBox "ERROR [" & PDFCreator1.cErrorDetail("Number") & "]: " & PDFCreator1.cErrorDetail("Description")End Sub
Private Sub PDFCreator1_eReady() 'File was saved FileSaved = True PDFCreator1.cPrinterStop = TrueEnd Sub
Private Sub SetPrinter(Printername As String) With Dialogs(wdDialogFilePrintSetup) .Printer = Printername' .Printer.PaperSize = wdPaperLetter .DoNotSetAsSysDefault = True .Execute End WithEnd Sub
Yes, the hang-on-cClose problem is the major one left for us. We are actually writing settings to the registry directly instead of using the COM interface, and that works fine.
If we close without a delay prior, it reliably hangs. If we wait, as now, 2000 milliseconds it seems to hang "only" about 1 times out of 10.
the old content is not lost, you can find it here:
(as stated in the new forums thread)
1.) Old content has been reposted in the new forum. Try your seach again.
2.) I don't know much about VB.NET,. but I was running into a similar problem with Python which seemed to work much better when I wrapped up the entire functions inside another class. basically I had to remove the PDFCreator references from any public function so that they were destroyed upon completing. When I was testing the code I always had trouble, once I integrated it into a larger program things started working better, but not perfectly as expected :-(