For reasons I can’t get into right now, I need to prevent the Adobe Reader window from opening up when I try to print a document. The developer that was working on this before me has the following flags set, although I’m not really sure what they’re for –
if (RegistryManager.GetAcrobatVersion() >= 9.0f)
printerArg = "\"" + printerName + "\"";
else
printerArg = printerName;
Process myProc = new Process();
myProc.StartInfo.FileName = fileName;
myProc.StartInfo.Verb = "printto";
myProc.StartInfo.UseShellExecute = true;
myProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProc.StartInfo.CreateNoWindow = true;
myProc.StartInfo.Arguments = "\"" + printerName + "\"";
bool result = myProc.Start();
if (myProc.WaitForInputIdle())
{
if (!myProc.HasExited)
{
myProc.WaitForExit(Convert.ToInt32(5000));
myProc.Kill();
}
}
myProc.Close();
Any help is much appreciated!
Thanks,
Teja.
While I can’t answer your question specifically, I found that I couldn’t do this as Adobe changed Reader I think at version 9 or 10 so that you couldn’t supress the print dialog, and the window itself kept coming up anyway, and since my users all had different versions of Reader installed I couldn’t get anything consistently working. If you want to try anyway have a look at Reader’s API – you need to add a reference to the correct COM library and go from there. Painful.
I ended up dropping Adobe completely by running the PDF through GhostScript. Following is the helper class I created to do the job.
gsExePathshould be something likeC:\Program Files\gs\gs8.71\bin\gswin32c.exe.The following should print to the Windows default printer: