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

时间:2009-02-14 18:29:09

标签: c# .net

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

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

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

9 个答案:

答案 0 :(得分:8)

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

有一些商业渲染器和极少数免费渲染器。

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

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

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

看看今天我回答的this SO question 它包含更多信息以及几个月前我在另一个论坛上发布的working .Net code的链接。

答案 1 :(得分:5)

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

答案 2 :(得分:5)

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

Adob​​e 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可能会被遗弃。

答案 3 :(得分:3)

与acrobat reader一起安装的ActiveX控件应该可以使用,可以通过设计器将其删除,也可以使用this之类的内容。

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

您可以使用Nuget的Spire.PDFViewer。见here

答案 6 :(得分:0)

有免费PDF library。它主要是编辑内容,但它可能有所帮助。

答案 7 :(得分:0)

这是猜测。

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

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

答案 8 :(得分:0)

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

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