我能够在我的C# / WPF应用程序中创建PDF,并使用以下代码运行:
Process.Start(_pathToPDFFile);
此方法适用于Adobe Acrobat,但不适用于Adobe Reader。当安装了Adobe Reader时,Process.Start()
仅在任务管理器中已经运行Reader进程时才能正常运行。
我如何让Adobe Reader在尝试启动PDF时显示PDF呢?
我能够在我的C# / WPF应用程序中创建PDF,并使用以下代码运行:
Process.Start(_pathToPDFFile);
此方法适用于Adobe Acrobat,但不适用于Adobe Reader。当安装了Adobe Reader时,Process.Start()
仅在任务管理器中已经运行Reader进程时才能正常运行。
我如何让Adobe Reader在尝试启动PDF时显示PDF呢?
var process = new Process();
process.StartInfo = new ProcessStartInfo(@"Path to your PDF.pdf");
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = true;
process.Start();
这是我的做法,虽然可能有一种方法可以从注册表中恢复AcroRd32.exe的确切路径:
String pathToAcroRd32 = Environment.GetEnvironmentVariable("ProgramFiles") + ((Environment.Is64BitOperatingSystem) ? @" (x86)\" : @"\") + "Adobe\Reader 11.0\Reader\AcroRd32.exe";
ProcessStartInfo adobeInfo = new ProcessStartInfo(pathToAcroRd32, _pathToPDFFile);
Process.Start(adobeInfo);
还取决于要启动的Acrobat Reader版本(如果与Adobe Reader 11.0不同),您可能需要更改路径。
首先,您必须检查Adobe Reader是否是pdf文件的默认程序。您可以在控制面板 -> 程序 -> 默认程序 -> 设置关联中进行检查。
如果Adobe Reader是默认的PDF程序,则您的代码应该在Windows 8上工作,在大多数Windows版本中实际上都是如此。
如果Adobe Reader不是默认的PDF程序,则需要获取到AcroRd32.exe的路径。这个post应该会对您有所帮助。然后只需执行Hybris95答案中的代码即可。
我没有看到你的完整代码,但是我通过将ProcessStartInfo.UseShellExecute
设置为true来解决了类似的问题。
像这样:
var p = new Process
{
StartInfo = new ProcessStartInfo(@"chrome.exe", path)
{
WindowStyle = ProcessWindowStyle.Maximized
}
};
p.Start();
Process.Start
中显式使用它?Adobe Reader命令行参考Q on Stack Overflow。 - Andrew Morton