c# - 将 pdf 文件添加到 Visual Studio 中

标签 c# visual-studio-2010 pdf

我有一个菜单条,其中有一个我创建的标签为“内容”的选项卡。我希望能够单击“内容”选项卡,然后弹出一个窗口,其中包含列出内容的 pdf 文件。我有一个 pdf 文件,其中列出了保存到桌面的内容。有没有办法将此 pdf 文件添加到 Visual Studio,以便当我单击“内容”选项卡时,将打开该 pdf 文件?

我不想单击另一个按钮来搜索我的计算机中的文件,例如使用 OpenFileDialog。我只想单击“内容”选项卡并让它打开一个包含 pdf 文件的窗口。

最佳答案

有多种方法可以做到这一点。

1) 一种方法是从您的应用程序启动一个进程,该进程将在您的 PC 上打开默认注册的 PDF 文件查看器(例如 Adob​​e Reader),并将 PDF 文件的完整路径作为参数传递:

在这里,您可以了解如何通过文件扩展名(在您的情况下为“.pdf”)确定默认处理程序应用程序的路径:

http://www.pinvoke.net/default.aspx/shlwapi/AssocQueryString.html

string execPath = GetAssociation(".pdf");

一旦您知道可执行文件的路径,您就可以使用 PDF 文件的路径作为参数来启动它:

using System.Diagnostics;
...
// Start new process
Process.Start(execPath, "C:\\myfile.pdf").WaitForExit(0);

2) 另一种方法是在应用程序中创建一个 Windows 表单并向其中添加 Web 浏览器控件。然后可以通过编程方式将 Web 浏览器控件“导航到”您的特定 PDF 文件。假设您的 Internet Explorer 已经可以通过在其窗口中使用 Adob​​e Reader 之类的工具来显示 PDF 文件,即作为内联附件:

将项目中的引用添加到 Microsoft Internet Controls 1.1(右键单击“引用”>“添加引用...”>“COM”)。

在您的表单代码中(此处 panePdfViewer 是一个占位符 System.Windows.Forms.Panel 控件):

private AxSHDocVw.AxWebBrowser axWebBrowser;

...

private void InitializeWebControl()
{
  this.SuspendLayout();

  this.axWebBrowser = new AxSHDocVw.AxWebBrowser();
  ((ISupportInitialize)(this.axWebBrowser)).BeginInit();
  this.axWebBrowser.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom)
  | AnchorStyles.Left)
  | AnchorStyles.Right)));
  this.axWebBrowser.Enabled = true;
  this.axWebBrowser.Location = this.panelPdfViewer.Location;
  this.axWebBrowser.Size = this.panelPdfViewer.Size;
  ((ISupportInitialize)(this.axWebBrowser)).EndInit();
  this.axWebBrowser.Visible = false;

  this.Controls.Add(this.axWebBrowser);

  this.ResumeLayout(false);
}

然后:

// Clear browser
object blank = "about:blank";
this.axWebBrowser.Navigate2(ref blank);

// Display file
object loc = "file:///" + System.IO.Path.GetFullPath(fileName).Replace('\\', '/');
object null_obj_str = null;
object null_obj = null;
this.axWebBrowser.Navigate2(ref loc, ref null_obj, ref null_obj, ref null_obj_str, ref null_obj_str);

3)第三种方法是使用可以显示PDF文件的第三方控件库。

关于c# - 将 pdf 文件添加到 Visual Studio 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24272336/

相关文章:

c# - 在 Visual Studio 2012 中添加对其他项目的引用

c# - 如何使用 Open XML 从 Word 文档中的控件读取数据

c# - 我可以让 Memcached 在 Windows (x64) 64 位环境中运行吗?

c# - 用子项序列化对象 c#

c++ - 如何在同一个项目中运行多个不同的项目?

c# - 如何在 Visual Studio 2010 中为 C# 安装程序编写自定义操作?

c - 用C语言构建一个漂亮的GUI

php - 链接到 html 中的 PDF,该文件没有扩展名,但我知道它是 pdf 如何正确打开它

c# - 如何将 Excel 文件另存为 PDF 并适合页面

pdf - 使用 VBScript 合并多个 PDF 文件