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

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

是否有一种在ASP.NET中执行此操作的特定方法,或者答案只是JavaScript?

===============>>#1 票数:18 已采纳

没有,没有,不试试。

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

今天,任何可以运行Web浏览器的操作系统都可以直接查看PDF文件。

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

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

如果我自欺欺人,我很乐意向我解释我错在哪方面。

===============>>#2 票数:3

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

===============>>#3 票数:3

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

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

对于2008年编写的脚本以及有关警告的更多信息,请参阅在Internet Explorer中检测插件(以及所有其他提示的一些提示)

===============>>#4 票数:2

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

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

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

  ask by Joe Ratzer translate from so

未解决问题?本站智能推荐:

1回复

ASP.NET 4.0,IIS6上的浏览器二进制PDF文件

我有一个ASP.Net 4.0 Web应用程序,它在客户端的浏览器上呈现一个使用CrystalReports在iFrame中通过二进制写入动态创建的PDF。 webapp在我的开发站(Visual Studio 2012 Web Developer)上运行良好,但是当我测试我们的生产服务器(W
1回复

PDF下载在Android浏览器中失败

我有一个ASP.Net WebForm,可以动态生成pdf。 pdf下载适用于所有台式机浏览器以及iPad,Chrome移动版和Firefox移动版。 但是,PDF下载在Android浏览器中失败,并在通知区域显示消息“下载不成功”。 我使用以下代码将pdf写入响应: 要使pdf下
2回复

如何指定用于从浏览器保存pdf的名称

ASP.NET MVC 4控制器解析pdf: 结果显示在Chrome浏览器窗口中。 如果用户右键单击pdf并选择另存为,Chrome将提供Pdf.pdf作为要保存的文件名。 如何指定其他默认文件名,例如Order 123.pdf ? Chrome开发者工具显示文件nime没
1回复

如何在浏览器(非移动)中显示本地pdf文件

我找不到适用于浏览器pdf的插件。 也许我可以使用HTML5或类似的工具吗? 我已经尝试过了,但是似乎只在移动设备上有效:
3回复

在浏览器中需要一个打印按钮,它将打印PDF文件

我需要在HTML中设置一个打印按钮,该按钮将打印某些PDF文件,希望不必先下载该文件。 我尝试了一些方法,但有些方法仅在IE中有效。 有些要求将文件下载为嵌入式对象,这也是不可接受的。 将javascript嵌入PDF听起来是最有前途的,但由于其他原因,我宁愿避免这样做。 还有其他想
1回复

如何在不打开浏览器的情况下下载pdf文件

我正在尝试此代码,但没有任何错误,它没有为我显示任何内容。 这对我不起作用
2回复

将二进制文件发送到浏览器后,关闭弹出窗口

页面将二进制数据(PDF)写到浏览器后,是否可以关闭弹出窗口? 详细信息如下: 每当我的网络应用程序需要打印时,它将把一些参数传递到一个弹出窗口,该窗口将显示打印选项。 当用户单击“打印”按钮时,它将设置iframe的src,该iframe会调用进行打印的页面。 我有PDFC
2回复

在浏览器中创建PDF:自定义字体

我知道有两个库可以在浏览器中使用Javascript创建PDF文件( [1] , [2] )但是它们都不允许在文档中嵌入自定义字体。 [2]允许设置自定义字体,但仅适用于标准PDF字体(Courier,Times-Roman),并且它们都不再被积极开发。 有没有人知道在浏览器中创建PDF
2回复

如何使用javascript在浏览器中显示PDF流

我正在使用jquery的ajax方法访问现有的WCF Web服务(它将PDF作为字节流返回)。 当对服务的调用完成时,我最终得到一个包含PDF的javascript变量(该变量包含二进制数据,从“%PDF-1.4 ...”开始)。 我想在新的浏览器窗口中显示这个PDF,但是我很难实现
1回复

JavaScript和浏览器PDF支持检测

我正在尝试基于运行应用程序的浏览器来工作PDF支持检测。 第一个应用程序正在检查浏览器是否未在移动设备上运行。 那部分工作正常-我正在获取Globals.bAllowPdfPreview = true 然后我尝试执行以下代码 它在Chrome上运行良好,但无法在FireFo