.NET在winform中打开PDF,没有外部依赖

是否有免费的图书馆,允许我打开PDF并在winform项目上显示它。 我知道我可以在adobe reader或者其他东西中打开它,但它总是让我感到臃肿,我会依赖它安装它。 有一个很好的轻量级替代方案,我可以在我的项目中包含一个DLL或类似的避免外部依赖。

我不需要太多function只是查看,更改页面缩放..

我见过几个库,但它们似乎是关于创建PDF而不是查看。

随acrobat阅读器安装的ActiveX控件应该可以工作,或者通过设计器放入或使用这样的东西。

这将要求在客户端上安装相关版本的阅读器,但由于您表明您可以启动它,无论如何这应该不是问题。 读者

我会将福昕阅读器作为Adobe Reader的轻量级替代品。 它由一个.exe文件组成,您可以将其与应用程序捆绑在一起,因此不需要任何安装。 根据他们的EULA,只要您的应用程序未安装在移动设备上,就允许这样做。 您所要做的就是将读取器作为一个新进程启动,指向相应的pdf。 显然,这种方法的缺点是它不会集成到您的应用程序界面中。

首先,您需要参考Adobe Reader ActiveX控件

Adobe Acrobat浏览器控件类型库1.0

%programfiles&\ Common Files \ Adob​​e \ Acrobat \ ActiveX \ AcroPDF.dll

然后,您只需从工具箱中将其拖到Windows窗体中即可。

并使用这样的代码来初始化ActiveX控件。

private void InitializeAdobe(string filePath) { try { this.axAcroPDF1.LoadFile(filePath); this.axAcroPDF1.src = filePath; this.axAcroPDF1.setShowToolbar(false); this.axAcroPDF1.setView("FitH"); this.axAcroPDF1.setLayoutMode("SinglePage"); this.axAcroPDF1.Show(); } catch (Exception ex) { throw; } } 

确保您的表单关闭时您处置ActiveX控件

 this.axAcroPDF1.Dispose(); this.axAcroPDF1 = null; 

否则Acrobat可能会被遗弃。

我不确定你所谓的’依赖’,因为除非你将整个PDF渲染源捆绑在你的项目中,否则你将不得不依赖一些外部代码来渲染PDF。

有一些商业渲染器和很少的免费渲染器。

如果你想避免无法捆绑的依赖,那么你可以查看SumatraPDF的源代码 , SumatraPDF是一个使用MuPDF的 Windows的OpenSource PDF查看器。
还有Poppler ,一个使用Xpdf作为渲染引擎的渲染引擎。 所有这些都很棒但是它们需要相当多的承诺才能使它们与.Net一起工作和接口。

大多数其他开源库仅用于创建和管理PDF页面,我不知道实际上是否有任何渲染; 这是一个难以解决的难题。

您可能仍然希望考虑使用GhostScript作为解释器,因为呈现页面是一个相当简单的过程。
缺点是您需要重新打包它以将其与您的应用程序一起安装,或者将其作为先决条件(或至少是安装过程的一部分)。
这不是一个很大的挑战,它肯定比将其他渲染引擎按到.Net更容易。

看看我今天回答的这个问题 。
它包含了一些更多的信息,以及几个月前我在另一个论坛上发布的一些工作.Net代码的链接。

看看这个。 它需要相当多的库(包括GhostScript),所以它的重量不是很轻。 但所有依赖项都包括原生PDF阅读。 它在VB中 – 但如果你需要C#可以翻译:

http://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe

有一个免费的PDF库 。 它主要是编辑内容但它可能会有所帮助。

这是猜测。

浏览器使用插件在其中呈现PDF的方式。 我不确定是否需要安装应用程序。

您可以使用福昕阅读器或苏门答腊PDF。
并且,您可以在winform上托管浏览器控件。

在表单上放置一个webBrowser控件。 strPdfFile =“C:\ SomeFile.pdf”webBrowser.Url = new Uri(strPdfFile);

这对我们有用,直到尝试使用Win7-64bit系统。 现在需要做一些调试。

您可以使用Nuget的Spire.PDFViewer。 看到这里