【问题标题】:Opening pdf files using Process.Start使用 Process.Start 打开 pdf 文件
【发布时间】:2015-07-06 17:31:45
【问题描述】:

我正在尝试使用 C# 的 Process.Start() 在 Adob​​e 阅读器中打开 PDF 文件。

当我提供不带空格的路径时,它可以正常工作,但无法打开包含空格的路径和 pdf 文件。

这是我的代码:

Button btn = (Button)sender;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "AcroRd32";
string s = btn.Tag.ToString();
//btn.Tag Contains the full file path 
info.Arguments = s;
Process.Start(info); 

如果是C:\\Users\\Manish\\Documents\\ms_Essential_.NET_4.5.pdf,它可以正常工作,但如果是F:\\Tutorials\\C#\\Foundational\\Microsoft Visual C# 2012 Step By Step V413HAV.pdf,Adobe Reader 会报错there was an error in opening the document file can't be found

我在 SO 中阅读了许多与此主题相关的问题,但它不起作用。因为我不知道如何在我的字符串s 中应用@ 前缀。

任何想法如何解决这个问题?

【问题讨论】:

    标签: c# pdf process.start


    【解决方案1】:

    只是一个小技巧,客户端上设置了默认的 PDF 阅读器:如果进程使用文件名作为FileName。通常你不关心使用哪个程序,所以这个解决方案就可以了:

    Process.Start(pdfFileName);
    

    这也不需要特殊引用,因此它可以立即解决您的问题。

    【讨论】:

    • 在发布问题之前我已经尝试过了,但我需要它是针对特定程序的,以供将来参考,但无论如何,感谢您的帮助
    【解决方案2】:

    尝试将参数包裹在引号中:

    info.Arguments = "\"" + s + "\"";
    

    【讨论】:

    • 如果有效,请勾选绿色 V 以接受此答案。
    【解决方案3】:

    在字符串值之前使用字符 @ 应该可以工作:

    var path = @"F:\Tutorials\C#\Foundational\Microsoft Visual C# 2012 Step By Step V413HAV.pdf";
    

    【讨论】:

      【解决方案4】:

      您应该引用参数列表中提供的路径。这将导致它将路径视为单个参数,而不是多个空格分隔的参数:

      info.Arguments = "\"" + s + "\"";
      

      【讨论】:

        猜你喜欢
        • 2015-04-16
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        • 2015-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多