【发布时间】:2015-09-18 14:14:03
【问题描述】:
我正在尝试从我的应用程序中打开 PDF。我为此经历了几次迭代,并解决了我唯一剩下的选择就是打开 Adobe Reader,将 PDF 的位置作为参数传递。我看过的库不支持我需要的(渲染表单字段),Telerik PDF 控件也不支持。因此,我绝对探索了购买选项而不是构建选项。
无论如何,这在运行提示符下可以正常工作,如下所示:
"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" "C:\Users\Foo\AppData\Local\Temp\Bar.pdf"
但是,从代码中,执行以下操作不起作用:
ProcessStartInfo info = new ProcessStartInfo(@"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe", location);
Process.Start(info);
使用 Process.Start,我可以在我的任务管理器列表中看到 Adobe 进程作为后台进程,但是没有 UI,而它在运行时完美运行,它显示在 App 下并按照我的预期提供 UI。
我没有看到强制显示 UI 的方法。 MainWindowHandle 为 0,WindowStyle 设置为 Normal,CreateNoWindow 为 false。
我尝试过的其他事情是手动设置 EnvironmentVariables 集合并关闭 shell 执行。我也尝试将用户配置文件加载到进程中,但没有效果。
我需要在这里做什么?
【问题讨论】:
-
您的代码对我有用。也许是 adobe reader 的问题,我的版本是 11.0.3,我使用的是 .Net 4.5。或 ACL 问题。
-
我不知道你的问题的解决方案,但我知道我会用什么工具来解决这个问题。 technet.microsoft.com/en-us/library/bb896645.aspx
-
尝试运行 cmd.exe /c C:\Program Files (x86)\Adobe... 这应该会使环境看起来更像命令行环境。