【问题标题】:C# How to open a PDF in my project resources?C# 如何在我的项目资源中打开 PDF?
【发布时间】:2013-03-27 00:38:16
【问题描述】:

我有一个带有“帮助”上下文菜单的 winfrom 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??
}

【问题讨论】:

  • Process.Start("pdf file path")?
  • 我该如何开始(Properties.Resources.mypdf)?我的 .start 部分是我的担忧

标签: c# pdf


【解决方案1】:
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

【讨论】:

  • +1,除了你可能希望使用Path.Combine而不是string.Format...另外,查看文件后不要忘记清理!
  • 关于 Path.Combine 的好主意,谢谢。至于清理,我将把它留给 Mrshll187,因为他可能想将文件写入应用程序文件夹而不是临时文件夹,因此不需要清理。
【解决方案2】:

试试这个(您只需要 PDF 文件的路径,无需将其添加到资源中):

using System.Diagnostics;

Process.Start(“Path_of_PDFFile”)

【讨论】:

  • 如何给它一个路径。它在应用程序资源中
  • 但是这个文件在你的系统上,我的意思是 C:/Programs/bla-bla?或不? ;)
  • 安装时它在应用程序中的捆绑包。这一切都与它放置的位置有关。硬编码路径不是一种选择
  • 在这种情况下,只需将此文件复制到您的应用程序的目录(子文件夹帮助,例如会很好);)
【解决方案3】:

在你的使用中添加using System.Diagnostics;,然后调用:

Process.Start("path to pdf")

您不需要找到 PDF Reader exe 或任何东西。只需调用你想要的文件的路径即可。

【讨论】:

  • 此文件在我的应用程序资源中。给它一个文件路径是困难的部分。我是否从我的资源中流式传输并将文件重新创建到某个路径然后打开它?我该如何处理?
  • 所以 PDF 根本没有存储在您的计算机上?
  • 路径是相对于用户安装/执行应用程序的位置。 pdf 是应用程序本身的资源
  • process.Start(Properties.Resources.mypdf);` 使用你得到的代码和你的 pdf 资源路径怎么样?
  • Process.start() 需要一个字符串。你上面提到的 Resources.mypdf 将返回一个 byte[]
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多