2009-02-14 132 views
12

是否有免费的库让我可以打开pdf并在Winform项目中显示它。我知道我可以在Adobe Reader中打开它,但它总是显得很臃肿,我会依靠它被安装。有没有一个很好的轻量级替代方案,我可以在我的项目中包含一个DLL或类似的避免外部依赖。.NET在没有外部依赖的情况下在Winform中打开PDF

我并不需要太多的功能,就像查看,更改页面缩放..

我看到了几个库,但他们似乎是有关创建PDF不是观看。

回答

4

安装了acrobat reader的ActiveX控件应该可以工作,或者通过设计器放入它或使用类似this的东西。

这将需要读者的相关版本安装在客户端上,但既然您表明您可以启动,无论如何这应该不成问题。读者

+0

是的,但正如我所说目前这不是一个问题,但我宁愿不随着事情的快速变化而有依赖关系。 – PeteT 2009-02-14 21:09:17

+0

我知道没有免费的对不起 – ShuggyCoUk 2009-02-14 21:42:36

+0

为什么这是公认的答案!!!!!它很简单!没有依赖! – 2017-01-12 07:04:03

0

这是一个猜测。

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

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

5

我不确定你称之为“依赖”,因为除非你在项目中捆绑整个PDF渲染源,否则你总是不得不依赖一些外部代码来渲染PDF。

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

如果你想避免你不能捆绑,那么也许你可以看看在source codeSumatraPDF,一个开放源代码的PDF浏览器使用MuPDF窗户依赖性。
还有Poppler,一个使用Xpdf作为渲染引擎的渲染引擎。 所有这些都很棒,但它们需要相当的承诺才能使它们工作并与.Net接口。

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

您可能仍然想考虑使用GhostScript作为解释器,因为渲染页面是一个相当简单的过程。
缺点是您需要重新打包才能将其安装在您的应用中,或者将其作为必备条件(或至少是安装流程的一部分)。
这不是一个很大的挑战,它比将其他渲染引擎按到.Net中要容易得多。

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

+1

苏门答腊省使用muPDF。 – miracle2k 2012-09-02 20:11:56

+1

@ miracle2k谢谢,我更新了我的回答以反映这一点。 – 2012-09-04 03:49:02

5

我会考虑将Foxit Reader作为Adobe Reader的轻量级替代方案。它由一个单独的.exe文件组成,您可以将它与应用程序捆绑在一起,因此不需要进行任何安装。根据他们的EULA,这是允许的,只要你的应用程序没有安装在移动设备上。你所要做的就是启动读者作为一个新的过程,指向适当的pdf。显然这种方法的缺点是它不会被集成到你的应用程序的界面中。

5

首先,你需要引用ADOBE READER ActiveX控件

的Adobe Acrobat浏览器控件的类型库1.0

%PROGRAMFILES & \ Common Files文件\的Adobe \ 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中可能被遗落各地。

0

http://pdfsharp.com/PDFsharp/

PDF夏普可以直接在两个GDI +(的WinForms)或DirectX(WPF)漆加载/创建的PDF。如果你1)加载PDF和2)显示它,它应该做你想做的。关于缩放;如果你使用GDI +,http://www.bobpowell.net/zoompicbox.htm可能会对你有所帮助,否则,WPF和DirectX支持本地缩放任何东西,因为它是渲染类型。

我希望这会有所帮助。

0

将WebBrowser控件在窗体上。 strPdfFile =“C:\ SomeFile.pdf” webBrowser.Url = new Uri(strPdfFile);

这是为我们工作,直到在Win7-64bit系统上尝试。现在需要做一些调试。

0

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

相关问题