【发布时间】:2014-04-17 12:35:31
【问题描述】:
嗯,我的目标是在不要求用户确认的情况下打印 PDF 文件。
我不能强迫我的用户使用特定的 PDF 阅读器(例如 Adobe Acrobat 或 Foxit)并且需要在不要求用户确认的情况下打印文件任何用户交互。
我当前的代码如下:
String strFile = "pdf_file.pdf";
String strPrinter = "Printer Name";
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = strFile;
p.StartInfo.Arguments = strPrinter;
p.StartInfo.Verb = "PrintTo";
p.StartInfo.CreateNoWindow = true;
p.Start();
p.CloseMainWindow();
如果进程不退出,我有一些代码可以终止进程,但现在没关系。
这段代码运行良好,但我无法获得过程中出现的错误消息。
在这种情况下,try catch 块没有帮助,因为错误发生在进程“p”中,而不是在主进程中。
在网上搜索我发现要恢复错误我需要设置以下内容:
p.StartInfo.RedirectStandardError = true;
p.StartInfo.UseShellExecute = false;
// Start process, kill it, etc...
String s = p.StandardError.ReadToEnd();
但应用此代码给了我另一个错误:该文件不是有效的 win32 应用程序。
显然,我打开的文件是 PDF 文件,而不是 EXE。
有谁知道另一种方法来恢复过程中发生的错误?
比如找不到打印机等...
【问题讨论】:
-
对于初学者,您尝试将 PDF 文件作为可执行文件启动。 PDF 不可执行。
-
这正是我在“显然,我正在打开的文件是 PDF 文件,而不是 EXE”中所说的。
p.StartInfo.UseShellExecute = true;时效果很好