使用Process.Start打开pdf文件

时间:2015-07-06 17:31:46

标签: c# pdf process.start

我正在尝试使用C#' Process.Start()在Adobe阅读器中打开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前缀。

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

4 个答案:

答案 0 :(得分:6)

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

Process.Start(pdfFileName);

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

答案 1 :(得分:5)

尝试将参数包装在引号周围:

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

答案 2 :(得分:1)

在字符串值之前使用字符@应该起作用:

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

答案 3 :(得分:0)

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

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