我正在尝试使用 C# 的
Process.Start()
在 Adobe reader 中打开 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
。
我已经阅读了许多与该主题相关的问题,但它不起作用。因为我不知道如何在字符串中应用
@
前缀 s
。
有什么想法可以解决这个问题吗?
有一个小技巧,客户端设置了默认的 PDF 阅读器:如果进程使用文件名作为
FileName
。通常你不关心使用哪个程序,所以这个解决方案就可以了:
Process.Start(pdfFileName);
这也不需要特殊引用,因此它可以立即解决您的问题。
尝试将参数括在引号中:
info.Arguments = "\"" + s + "\"";
在字符串值之前使用字符 @ 应该有效:
var path = @"F:\Tutorials\C#\Foundational\Microsoft Visual C# 2012 Step By Step V413HAV.pdf";
您应该引用参数列表中提供的路径。这将导致它将路径视为单个参数,而不是多个空格分隔的参数:
info.Arguments = "\"" + s + "\"";
就我而言,调用 System.Diagnostics.Process.Start 是不够的
System.Diagnostics.Process.Start(pdfFilename);
但这有效
var process = new Process();
process.StartInfo = new ProcessStartInfo(pdfFilename)
{
UseShellExecute = true
};
process.Start();
这样就可以使用默认的pdf阅读器直接打开pdf文件