【问题标题】:Open a PDF with arguments (Page/Named Destination) WITHOUT referencing a specific program在不引用特定程序的情况下打开带有参数(页面/命名目标)的 PDF
【发布时间】:2014-03-21 20:37:46
【问题描述】:

感谢您花时间阅读我的困惑。

我需要打开一个 PDF(C# 4.0,winforms)。现在通常,如果您不传递参数(Process.Start 到 PDF),这很容易,但我需要能够传递参数(现在转到特定页面或指定的目的地,也许稍后会更多)。

现在我知道,如果您调用 AcroRd32,您可以传入执行此操作所需的参数,但是用户可能没有在他们的计算机上安装 Acrobat Reader,所以我真的不想调用那个 exe一定。任何人都知道一种方法来解决这个问题?

我是否错过了使用其他方法的明显方法?

感谢您的帮助!

PS - 回复可以是 C# 或 VB,不要在意

【问题讨论】:

  • 他们是否可以在您的应用中打开它?如果是这种情况,您可以添加控件并这样做。
  • 抱歉,忘记包含这是winforms
  • CoDeXeR 先生,没有一个文件。该应用程序加载了一堆不同的模板,其中可能包含帮助文件 (PDF),因此我无法在 exe 中包含 PDF。我不知道在应用程序中打开它的另一种方式
  • 您是否考虑过在您的 Windows 窗体应用程序中使用一些开源库来呈现您的 pdf?比如:ghostscriptnet.codeplex.com
  • 如果必须的话,我可以使用 ghostscript 之类的东西,但我宁愿使用系统上安装的任何普通 PDF 查看器。

标签: c# .net vb.net winforms pdf


【解决方案1】:

要传递Process.Start()中的参数,需要调用AcroRd32.exe或Acrobat.exe,如:

Process myProcess = new Process();    
myProcess.StartInfo.FileName = "acroRd32.exe"; //not the full application path
myProcess.StartInfo.Arguments = "/A \"page=2=OpenActions\" /n C:\\sample.pdf";
myProcess.Start();

我建议将此作为 Try/Catch 块,如果失败,则尝试将“Acrobat.exe”作为 FileName 在另一个嵌套的 Try/Catch 块中,如果失败,则默认为:

Process.Start("C:\\sample.pdf");

这不允许您打开特定页面,但如果前两种方法失败,至少可以打开 PDF。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多