I have set-up a workflow for novaPDF SDK that does this: first it calls SetDefaultPrinter() to set novaPDF as the default printer, then it sends a print job to it, and after that reverts back to the previous default printer calling the RestoreDefaultPrinter() function. However, after the first cycle of this workflow, novaPDF isn't set as the default printer anymore even if I use the SetDefaultPrinter() function again. Why?
This usually happens when the call to the RestoreDefaultPrinter() function is sent too fast, before the print job is actually assigned to a printer queue. In our samples (converter samples), we wait for a message from novaPDF that the job was finished before calling the RestoreDefaultPrinter().
An easier way is to use some events from novaPDF. Before starting the print job, you have to inform novaPDF that you want to wait for an event so you should call:
After you send the job to the printer, call this function:
pNova->WaitForNovaEvent(ULONG p_nMiliseconds, BOOL* p_bTimeout);
This function will return when the event was signaled (which means the PDF is finished) or when the time was elapsed. After that you can call the RestoreDefaultPrinter() function.