Javascript判断系统是否安装Acrobat Reader

现在有一个需求来了,我们需要做一个web应用程序,能够判断客户端是否安装了能够打开PDF文档的软件,例如Acrobat Reader.如果客户端装了这种软件,那么网页就以文件流的形式输出,Acrobat Reader就自动在网页里打开PDF:

我们的解决方案有两步:

第一,在客户端判断系统是否安装了Acrobat Reader.

第二,在程序后端根据回传条件输出文件流.

那么能不能直接在客户端浏览器判断系统安装Acrobat Reader?回答是可以的,用javascript就可以实现了,它的原理是用Javascript脚本来针测浏览器里是否含有Acrobat reader的ActiveX插件.代码实例如下

function isAcrobatPluginInstall() {

var flag = false;

if (navigator.plugins && navigator.plugins.length) {

for (x = 0; x < navigator.plugins.length; x++) {



if (navigator.plugins[x].name == 'Adobe Acrobat')

flag
= true;

}

}

else if (window.ActiveXObject) {

for (x = 2; x < 10; x++) {

try {

oAcro
= eval("new ActiveXObject('PDF.PdfCtrl." + x + "');");

if (oAcro) {

flag
= true;

}

}
catch (e) {

flag
= false;

}

}

try {

oAcro4
= new ActiveXObject('PDF.PdfCtrl.1');

if (oAcro4)

flag
= true;

}
catch (e) {

flag
= false;

}

try {

oAcro7
= new ActiveXObject('AcroPDF.PDF.1');

if (oAcro7)

flag
= true;

}
catch (e) {

flag
= false;

}

}

if (flag) {

return true;

}

return flag;

}

最后,将此函数的返回值传回服务器端,做出相应处理,如果没有安装Acrobat reader,就在Http header里加一个键值对"Content-Disposition",就可以弹出提示框来让用户选择是否需要下载PDF附件,之 后用户可以用别的工具打开它.ASP.NET服务端代码如下:

if (!isAcrobatInstall)

this.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "Output.pdf");

 以上就是我们的解决方案.

posted @ 2011-05-20 09:33  铁芒阁  阅读(1327)  评论(2编辑  收藏  举报
分享到: