使用 Process.Start 打开 pdf 文件

问题描述 投票:0回答:5

我正在尝试使用 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

有什么想法可以解决这个问题吗?

c# pdf process.start
5个回答
9
投票

有一个小技巧,客户端设置了默认的 PDF 阅读器:如果进程使用文件名作为

FileName
。通常你不关心使用哪个程序,所以这个解决方案就可以了:

Process.Start(pdfFileName);

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


7
投票

尝试将参数括在引号中:

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

1
投票

在字符串值之前使用字符 @ 应该有效:

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

0
投票

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

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

0
投票

就我而言,调用 System.Diagnostics.Process.Start 是不够的

System.Diagnostics.Process.Start(pdfFilename);

但这有效

var process = new Process();
process.StartInfo = new ProcessStartInfo(pdfFilename)
{
    UseShellExecute = true
};
process.Start();

这样就可以使用默认的pdf阅读器直接打开pdf文件

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.