10

确定用户的浏览器是否可以查看 PDF 文件的最佳方法是什么?

理想情况下,它在浏览器或操作系统上应该无关紧要。

在 ASP.NET 中是否有特定的方法,或者答案只是 JavaScript?

4

4 回答 4

19

没有,没有,不要尝试。

重新黎明:插件检测不是正确的答案。我的浏览器(Ubuntu 上的 Firefox)中没有安装 PDF 插件,但我可以使用操作系统的文档查看器(不是 Acrobat Reader)查看 PDF 文件。

今天,任何可以运行网络浏览器的操作系统都可以开箱即用地查看 PDF 文件。

如果特定系统没有安装 PDF 查看器并且浏览器配置为使用它,这可能意味着它要么是手工安装的 Windows,要么是非常精简的替代操作系统,要么是真正复古的东西。

可以合理地假设,在任何一种情况下,用户都会知道 PDF 文件是什么,并且故意选择不能够查看它们或知道如何安装所需的软件。

如果我在自欺欺人,我很想向我解释我错在哪里。

于 2008-09-16T19:55:10.833 回答
3

一个快速的谷歌搜索发现了这个。适用于各种插件。

于 2008-09-16T19:51:09.660 回答
3

有些用户选择不在浏览器中打开 PDF 并禁用插件(这允许文件在浏览器窗口外部的本机应用程序中打开)。最好让用户知道打开某些东西(无论是否是 PDF)需要软件,而不是尝试检测插件是否可用。

检测的另一个问题是您需要查找版本之间的变化(例如,请参阅:Adobe PDF 查看器的“PDF.PdfCtrl.*”与“AcroPDF.PDF.*”)和不同的浏览器实现(例如前面提到的字符串在IE中使用,而Firefox使用完全不同的检测方式。那么我们需要考虑Opera和Safari和???)。此外,有不同的供应商(想想 Foxit 和 Ghostscript,虽然我不确定他们是否为浏览器提供插件),在检测插件方面可能存在差异。

有关 2008 年编写的脚本和有关警告的更多信息,请参阅Detecting plugins in Internet Explorer(以及所有其他的一些提示)

于 2008-09-16T20:02:05.343 回答
2

在最初忽略此页面上的建议后,架构师继续使用 Acrobat 检测,导致不可避免的支持噩梦。

正如 ddaa 所提到的,并非所有场景都可以通过插件检测准确捕获。例如,某些用户可能会选择使用 FoxIt Reader 而不是 acrobat 来查看 PDF 文件。一些用户的浏览器不会标记他们已准备好 Acrobat,当然也不总是以相同的方式。

更好的解决方案是让用户选择他们希望如何查看相关文档。就个人而言,我不喜欢让任何网站依赖插件——它破坏了网络的美感。

于 2008-09-17T21:30:31.300 回答