确定用户的浏览器是否可以查看 PDF 文件的最佳方法是什么?
理想情况下,它在浏览器或操作系统上应该无关紧要。
在 ASP.NET 中是否有特定的方法,或者答案只是 JavaScript?
确定用户的浏览器是否可以查看 PDF 文件的最佳方法是什么?
理想情况下,它在浏览器或操作系统上应该无关紧要。
在 ASP.NET 中是否有特定的方法,或者答案只是 JavaScript?
没有,没有,不要尝试。
重新黎明:插件检测不是正确的答案。我的浏览器(Ubuntu 上的 Firefox)中没有安装 PDF 插件,但我可以使用操作系统的文档查看器(不是 Acrobat Reader)查看 PDF 文件。
今天,任何可以运行网络浏览器的操作系统都可以开箱即用地查看 PDF 文件。
如果特定系统没有安装 PDF 查看器并且浏览器配置为使用它,这可能意味着它要么是手工安装的 Windows,要么是非常精简的替代操作系统,要么是真正复古的东西。
可以合理地假设,在任何一种情况下,用户都会知道 PDF 文件是什么,并且故意选择不能够查看它们或知道如何安装所需的软件。
如果我在自欺欺人,我很想向我解释我错在哪里。
一个快速的谷歌搜索发现了这个。适用于各种插件。
有些用户选择不在浏览器中打开 PDF 并禁用插件(这允许文件在浏览器窗口外部的本机应用程序中打开)。最好让用户知道打开某些东西(无论是否是 PDF)需要软件,而不是尝试检测插件是否可用。
检测的另一个问题是您需要查找版本之间的变化(例如,请参阅:Adobe PDF 查看器的“PDF.PdfCtrl.*”与“AcroPDF.PDF.*”)和不同的浏览器实现(例如前面提到的字符串在IE中使用,而Firefox使用完全不同的检测方式。那么我们需要考虑Opera和Safari和???)。此外,有不同的供应商(想想 Foxit 和 Ghostscript,虽然我不确定他们是否为浏览器提供插件),在检测插件方面可能存在差异。
有关 2008 年编写的脚本和有关警告的更多信息,请参阅Detecting plugins in Internet Explorer(以及所有其他的一些提示)。
在最初忽略此页面上的建议后,架构师继续使用 Acrobat 检测,导致不可避免的支持噩梦。
正如 ddaa 所提到的,并非所有场景都可以通过插件检测准确捕获。例如,某些用户可能会选择使用 FoxIt Reader 而不是 acrobat 来查看 PDF 文件。一些用户的浏览器不会标记他们已准备好 Acrobat,当然也不总是以相同的方式。
更好的解决方案是让用户选择他们希望如何查看相关文档。就个人而言,我不喜欢让任何网站依赖插件——它破坏了网络的美感。