If you wish to use novaPDF in multi-threading or multi-process applications, there are some restrictions.
novaPDF COM is not thread safe, you should implement your own thread synchronization when using the COM.
When you use third party applications to print, they have to be licensed separately by using the LicenseApplication call. Because this call does not license this application for any print calls, but just for the next print job that will be executed by the printer, the calls of LicenseApplication and the execution of a print job must go in pair. If you call several times LicenseApplication in your code, but the printer processes some of the jobs later, they might not be licensed. So to assure these pair executions use next two calls when printing:
Before starting the print job call:
RegisterNovaEvent("NOVAPDF_EVENT_START_DOC")
After sending the print job, wait for the printer to start processing it and read the licensing for it by calling:
WaitForNovaEvent(-1, &bTimeout)