是否有免费的图书馆,允许我打开PDF并在winform项目上显示它.我知道我可以在adobe reader或者其他东西中打开它,但它总是让我感到臃肿,我会依赖它安装.有一个很好的轻量级替代方案,我可以在我的项目中包含一个DLL或类似的避免外部依赖.
我不需要太多功能只是查看,更改页面缩放..
我见过几个库,但它们似乎是关于创建PDF而不是查看.
我不确定你所谓的'依赖',因为除非你将整个PDF渲染源捆绑在你的项目中,否则你将不得不依赖一些外部代码来渲染PDF.
有一些商业渲染器和很少的免费渲染器.
如果你想避免无法捆绑的依赖,那么你可以查看SumatraPDF的源代码,SumatraPDF是一个使用MuPDF的 Windows的OpenSource PDF查看器.
还有Poppler,一个使用Xpdf作为渲染引擎的渲染引擎.所有这些都很棒,但它们需要相当多的承诺才能使它们与.Net一起工作和接口.
大多数其他开源库仅用于创建和管理PDF页面,我不知道实际上是否有任何渲染; 这是一个难以解决的难题.
您可能仍然希望考虑使用GhostScript作为解释器,因为呈现页面是一个相当简单的过程.
缺点是您需要重新打包它以将其与您的应用程序一起安装,或者将其作为先决条件(或至少是安装过程的一部分).
这不是一个很大的挑战,它肯定比将其他渲染引擎按到.Net更容易.
看看我今天回答的这个问题.
它包含一些更多的信息以及几个月前我在另一个论坛上发布的一些工作.Net代码的链接.
我会将福昕阅读器作为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可能会被遗弃.