是否有免费的库让我可以打开pdf并在Winform项目中显示它。我知道我可以在Adobe Reader中打开它,但它总是显得很臃肿,我会依靠它被安装。有没有一个很好的轻量级替代方案,我可以在我的项目中包含一个DLL或类似的避免外部依赖。.NET在没有外部依赖的情况下在Winform中打开PDF
我并不需要太多的功能,就像查看,更改页面缩放..
我看到了几个库,但他们似乎是有关创建PDF不是观看。
是否有免费的库让我可以打开pdf并在Winform项目中显示它。我知道我可以在Adobe Reader中打开它,但它总是显得很臃肿,我会依靠它被安装。有没有一个很好的轻量级替代方案,我可以在我的项目中包含一个DLL或类似的避免外部依赖。.NET在没有外部依赖的情况下在Winform中打开PDF
我并不需要太多的功能,就像查看,更改页面缩放..
我看到了几个库,但他们似乎是有关创建PDF不是观看。
安装了acrobat reader的ActiveX控件应该可以工作,或者通过设计器放入它或使用类似this的东西。
这将需要读者的相关版本安装在客户端上,但既然您表明您可以启动,无论如何这应该不成问题。读者
有一个免费的PDF library。它主要是编辑内容,但它可能有帮助。
这是一个猜测。
浏览器使用插件呈现PDF内部的方式。我不确定是否需要安装应用程序。
您可以使用福昕阅读器或苏门答腊PDF。
而且,您可以将浏览器控件托管在您的winform上。
我不确定你称之为“依赖”,因为除非你在项目中捆绑整个PDF渲染源,否则你总是不得不依赖一些外部代码来渲染PDF。
有一些商业渲染器和很少有免费的。
如果你想避免你不能捆绑,那么也许你可以看看在source code为SumatraPDF,一个开放源代码的PDF浏览器使用MuPDF窗户依赖性。
还有Poppler,一个使用Xpdf作为渲染引擎的渲染引擎。 所有这些都很棒,但它们需要相当的承诺才能使它们工作并与.Net接口。
大多数其他开源库只用于创建和管理PDF页面,我不知道任何实际渲染;这是一个很难解决的问题。
您可能仍然想考虑使用GhostScript作为解释器,因为渲染页面是一个相当简单的过程。
缺点是您需要重新打包才能将其安装在您的应用中,或者将其作为必备条件(或至少是安装流程的一部分)。
这不是一个很大的挑战,它比将其他渲染引擎按到.Net中要容易得多。
看看this SO question我今天回答。
它包含更多的信息和一些链接到一些working .Net code几个月前我发布在另一个论坛上。
苏门答腊省使用muPDF。 – miracle2k 2012-09-02 20:11:56
@ miracle2k谢谢,我更新了我的回答以反映这一点。 – 2012-09-04 03:49:02
我会考虑将Foxit Reader作为Adobe Reader的轻量级替代方案。它由一个单独的.exe文件组成,您可以将它与应用程序捆绑在一起,因此不需要进行任何安装。根据他们的EULA,这是允许的,只要你的应用程序没有安装在移动设备上。你所要做的就是启动读者作为一个新的过程,指向适当的pdf。显然这种方法的缺点是它不会被集成到你的应用程序的界面中。
首先,你需要引用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中可能被遗落各地。
PDF夏普可以直接在两个GDI +(的WinForms)或DirectX(WPF)漆加载/创建的PDF。如果你1)加载PDF和2)显示它,它应该做你想做的。关于缩放;如果你使用GDI +,http://www.bobpowell.net/zoompicbox.htm可能会对你有所帮助,否则,WPF和DirectX支持本地缩放任何东西,因为它是渲染类型。
我希望这会有所帮助。
看看这个。它需要相当多的库(包括GhostScript),所以它的重量并不是很轻。但是所有的依赖包括PDF的本地阅读。这是一个在VB - 但如果你需要C#可以翻译:
http://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe
将WebBrowser控件在窗体上。 strPdfFile =“C:\ SomeFile.pdf” webBrowser.Url = new Uri(strPdfFile);
这是为我们工作,直到在Win7-64bit系统上尝试。现在需要做一些调试。
您可以使用Nuget的Spire.PDFViewer。见here
是的,但正如我所说目前这不是一个问题,但我宁愿不随着事情的快速变化而有依赖关系。 – PeteT 2009-02-14 21:09:17
我知道没有免费的对不起 – ShuggyCoUk 2009-02-14 21:42:36
为什么这是公认的答案!!!!!它很简单!没有依赖! – 2017-01-12 07:04:03