testing 0.9.8 for the cClose hangs problem, i saw it seems ok on my machine.
Now i have implemented and distributed my software that use the pdfcreator com interface and on same machines the problem still appear. When hangs, it uses 100% of the cpu resource. Taskmanager is then needed to terminate it.
Forums are in large part inaccesibles so i have made a new post to have infos about. May i hope in a solution? and when?
yes, this is a known bug in PDFCreator. In 0.9.8 we have done some improvements, that should fix it for some situations, but it seems that it does not impact all situations. In general, it hepls to increase the waiting timers, but that is very ugly as well, I have to admit. The problem is very hard to track, as it does not always happen and if it happens, it cannot be tracked in the debugger, as it adds additional waiting times.
We are facing the same issue. This problem seems to be well known over several versions of Pdf Creator. I haven't seen any confirmation from the pdfforge team about this problem, is it a bug or is it wrong usage of the COM-interface by the users? I have tried to follow the procedures found in the examples but every now and then the cClose call isn't responding which leads to pdf creator hanging.
One possible workaround is to timeout the call to cClose and if the timeout occurs the pdfcreator process will be terminated with a "taskkill" command. This is a very ugly workaround, and I am curious on the pdfforge team:s conclusion to this issue. Is this something that will be fixed in a near future or what is the state of this issue?
Although PDFCreator seems to crash when calling the cClose() method, I found that in my environment that the cCloseRunningSession() worked without a hitch....definitely worth a try guys. Good Luck.
This cClose problem bedeviled me for some time; but I have found a workaround that always works.
It was a frustrating problem because sometimes the cClose method:
1: would work (it always seemed to work when I was slowly ‘stepping’ through my code)
2: would not work (like when I ran my code, often processing 100+ files with cCombineAll)
Either way my PDF file would be created, and when finished the Monitor showed no jobs in the que. But apparently cCountOfPrintjobs was NOT immediately being reset to "0". I had never thought of checking this, but that's apparently where the problem hid.
The solution was to wait a few seconds for the system to catch up. So after my print job ran, I inserted the following “wait and see” code. It will wait in 5 second increments (for up to 5 minutes) checking to see if the cCountOfPrintjobs is "0" yet. Once cCountOfPrintjobs is 0 (usually within 5-25 seconds) it WILL cClose.
The cClose problem has not been an issue since using this method.
t = 0
QlastPrintJob: If mypdfjob.cCountOfPrintjobs >= 1 Then
Application.Wait (Now + TimeValue("0:00:05"))
t = t + 1
If t > 60 Then ' 60 * 5 sec = 300 sec = 5 mins
GoTo JustGetOut ‘ gotta know when to throw in the towel
End If
GoTo QlastPrintJob
End If
If mypdfjob.cProgramIsRunning = True Then
mypdfjob.cClose
Application.Wait (Now + TimeValue("0:00:05")) ‘ just to be safe
Frank has been chasing this error for many days now and it seems that he has found the problem. It seems as if it is an issue with concurrent access in VB 6. If an unload request is coming, VB will leave any kind of Timer procedure and never continue it, which are used to check if new files are available to convert and such things. On the other hand, we have to wait until the timer procedures are finished, because the main form would load again automatically, if the timer is accessed again.
So this is a bit tricky and we are trying to find a solution to it.
I dont know if this will help anyone but it could enable someone to at least operate their PDFCreator until a fix comes along.
I have two machines that I'm testing PDFCreator 0.9.8 on.
One is a vista home premium laptop running office 2003 and Access and doesn't exhibit the above problem. However the other is a desktop Dell running XP Pro with the same version of Access and does exhibit the problem as discussed above.
I have tried various delay tactics in the second do loop as that's where the problem lies for me. My fix although a bit rough and ready is to put a simple msgbox() inside that loop. This seems to distract the loop and once you cancel the msgbox() everything carries on OK without the need to kill PDFCreator with Task Manager..
Part of Access sub as follows:-
'Wait until the print job has entered the print queue Do Until pdfjob.cCountOfPrintjobs = 1 DoEvents Loop
pdfjob.cPrinterStop = False
'Wait until PDF creator is finished then release the objects Do Until pdfjob.cCountOfPrintjobs = 0
' Removed DoEvents here and inserted the following line. MsgBox ("PDF File ready") 'My way of waking it out of its sleep Loop
pdfjob.cClose
'Reset the (original) default printer and release PDF Creator Set Application.Printer = Application.Printers(lngLPrinterCurrent) Set pdfjob = Nothing
I am afraid, that it is not that easy. We think it is solved now though. In a few days, we will have our final tests and the setup package ready for the public.