C#如何在我的项目资源中打开PDF文件?

4

我有一个WinForms GUI界面,其中有一个“帮助”上下文菜单。当用户点击时,我想打开应用程序的用户手册。该手册是一个存储在应用程序资源中的PDF文件。

问题:如何为用户打开它?

我正在使用的代码:

System.Diagnostics.Process process = new System.Diagnostics.Process();
bool adobeInstall = false;
RegistryKey adobe = Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Adobe");
if (adobe != null)
{
    RegistryKey acroRead = adobe.OpenSubKey("Acrobat Reader");
    if (acroRead != null)
        adobeInstall = true;
}

if (adobeInstall == true)
{
    ///Open the pdf file??
}

3
这段代码的意思是启动一个名为"pdf file path"的PDF文件。 - PiousVenom
我该如何开始(Properties.Resources.mypdf)?我不担心.start部分。 - stackoverflow
3个回答

6
string locationToSavePdf = Path.Combine(Path.GetTempPath(), "file name for your pdf file.pdf");  // select other location if you want
File.WriteAllBytes(locationToSavePdf,Properties.Resources.nameOfFile);    // write the file from the resources to the location you want
Process.Start(locationToSavePdf);    // run the file

除非您希望使用Path.Combine而不是string.Format,否则请将+1转换为代码。另外,在查看文件后不要忘记清理! - sǝɯɐſ
关于Path.Combine的好主意,谢谢。至于清理工作,我会留给Mrshll187处理,因为他可能想将文件写入应用程序文件夹而不是临时文件夹,这样就不需要进行清理了。 - coolmine

1
在您的代码中添加using System.Diagnostics;,然后调用:Process.Start("pdf文件路径")。您无需查找PDF阅读器exe或其他任何内容,只需要调用您想要的文件路径即可。

1
这个文件在我的应用程序资源中。给它一个文件路径是困难的部分。我应该从资源中流式传输并将文件重新创建到某个路径,然后再打开它吗?我该如何处理这个问题? - stackoverflow
那么PDF文件根本没有存储在你的电脑上? - PiousVenom
1
路径是相对于用户安装/执行应用程序的位置。PDF 是应用程序本身的资源。 - stackoverflow
使用您已经拥有的代码和PDF资源路径,尝试一下process.Start(Properties.Resources.mypdf);怎么样? - PiousVenom
Process.start()需要一个字符串。你上面提到的Resources.mypdf将返回一个byte[]。 - stackoverflow

1
尝试这个(只需要PDF文件的路径,无需将其添加到资源中):
using System.Diagnostics;

Process.Start(“Path_of_PDFFile”)

我该如何给它一个路径?它在应用程序资源中。 - stackoverflow
但是这个文件在你的系统上吗,我的意思是C:/Programs/bla-bla?还是不在呢?;) - Leo Chapiro
它在应用程序安装时捆绑在一起。它与放置的位置有关。硬编码路径不是一个选项。 - stackoverflow
1
在这种情况下,只需将此文件复制到您的应用程序目录中(例如子文件夹Help)即可;) - Leo Chapiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接