Hi I'm using PDFCreatoer with an application running within a citrix enviroment. the application runs as expected on my machine(true desk top).
the problem i get it sepradicly on user machnes I get the following error.
the I use is as follows
public bool ConvertToPdf(string filePath, string pdfDestinationPath)
{
TraceLogger.Log("entered method", System.Diagnostics.TraceEventType.Information, "CreatePDF", 36);
bool success = false;
string DefaultPrinter = string.Empty;
try
{
ReadyState = false;
string parameters;
TraceLogger.Log("creating error object", System.Diagnostics.TraceEventType.Information, "CreatePDF", 45);
pdfErrorr = new PDFCreator.clsPDFCreatorError();
TraceLogger.Log("creating pdfCreator object", System.Diagnostics.TraceEventType.Information, "CreatePDF", 48);
pdfCreator = new PDFCreator.clsPDFCreator();
pdfCreator.eError += new PDFCreator.__clsPDFCreator_eErrorEventHandler(pdfCreator_eError);
//System.Windows.Forms.MessageBox.Show("It does not reach this message", "", System.Windows.Forms.MessageBoxButtons.OK);
pdfCreator.eReady += new PDFCreator.__clsPDFCreator_eReadyEventHandler(pdfCreator_eReady);
parameters = "/NoProcessingAtStartup";
if (!pdfCreator.cStart(parameters, false))
{
throw new Exception("Error starting PdfCreator: [" + pdfErrorr.Number + "]: " + pdfErrorr.Description);
}
if (!pdfCreator.cIsPrintable(filePath))
{
throw new Exception("PdfCreator says that file '" + filePath + "' is not printable!");
}
pdfCreator.cClearCache();
pdfOptions = pdfCreator.cOptions;
// Store previous pdfOptionsion values:
int useAutosave = pdfOptions.UseAutosave;
int useAutosaveDir = pdfOptions.UseAutosaveDirectory;
string autoSaveDir = pdfOptions.AutosaveDirectory;
int autoSaveFormat = pdfOptions.AutosaveFormat;
string autoSaveFileName = pdfOptions.AutosaveFilename;
// Set new pdfOptionsions to save to the desired file:
pdfOptions.UseAutosave = 1;
pdfOptions.UseAutosaveDirectory = 1;
pdfOptions.AutosaveDirectory = Path.GetDirectoryName(pdfDestinationPath);
pdfOptions.AutosaveFormat = 0;
pdfOptions.AutosaveFilename = Path.GetFileNameWithoutExtension(pdfDestinationPath);
// Print:
TraceLogger.Log("Setting options", System.Diagnostics.TraceEventType.Information, "CreatePDF", 91);
pdfCreator.cOptions = pdfOptions;
pdfCreator.cClearCache();
TraceLogger.Log("Getting Default printer", System.Diagnostics.TraceEventType.Information, "CreatePDF", 94);
DefaultPrinter = pdfCreator.cDefaultPrinter;
TraceLogger.Log("the Default Printer is:" + DefaultPrinter, System.Diagnostics.TraceEventType.Information, "CreatePDF");
TraceLogger.Log("Setting pdfPrinter as default Default printer", System.Diagnostics.TraceEventType.Information, "CreatePDF", 97);
pdfCreator.cDefaultPrinter = "PDFCreator";
TraceLogger.Log("Setting pdfPrinter as default Default printer was SUCCESS", System.Diagnostics.TraceEventType.Information, "CreatePDF");
TraceLogger.Log("Print File", System.Diagnostics.TraceEventType.Information, "CreatePDF",100);
pdfCreator.cPrintFile(filePath);
pdfCreator.cPrinterStop = false;
// Wait till doc gets queued up.
while (pdfCreator.cCountOfPrintjobs != 1) ;
// Start the printer.
pdfCreator.cPrinterStop = false;
// Wait till all doc get converted to pdf.
while (pdfCreator.cCountOfPrintjobs != 0) ;
// Wait until print ends
/* timer.Interval = maxTime * 1000;
timer.Enabled = true;
while (!ReadyState && timer.Enabled)
{
Application.DoEvents();
System.Threading.Thread.Sleep(100); // Wait 100 miliseconds.
}
timer.Enabled = false;*/
// Restore previous pdfOptionsions values:
pdfOptions.UseAutosave = useAutosave;
pdfOptions.UseAutosaveDirectory = useAutosaveDir;
pdfOptions.AutosaveDirectory = autoSaveDir;
pdfOptions.AutosaveFormat = autoSaveFormat;
pdfOptions.AutosaveFilename = autoSaveFileName;
pdfCreator.cOptions = pdfOptions;
if (!ReadyState)
{
throw new Exception("PdfCreator printing timeout");
}
pdfCreator.cPrinterStop = true;
pdfCreator.cDefaultPrinter = DefaultPrinter;
success = true;
}
catch (Exception ex)
{
success = false;
MessageBox.Show(ex.Message + " within CreateToPDF");
}
finally
{
pdfCreator.cDefaultPrinter = DefaultPrinter;
// Close the PDF com object:
if (pdfCreator != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pdfErrorr);
pdfErrorr = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(pdfOptions);
pdfOptions = null;
pdfCreator.cClose();
System.Runtime.InteropServices.Marshal.ReleaseComObject(pdfCreator);
pdfCreator = null;
}
}
return success;
}