2011-04-13 49 views
0

我有一种情况,在客户端系统中,active-x检查被禁用,似乎由于安全原因他们无法启用它。如何检查Adobe Reader阅读器安装与否没有在Javascript中使用Active-X检查

在我的应用程序中,我必须测试客户端系统是否安装了Adobe Reader。是否有可能没有检查/创建新的活动X对象来验证IE浏览器?

如果上面的东西是不可能的,是否有任何API /代码可用于检查通过JAVA?

+0

如果这不是通过浏览器小程序,因为它是受限制的......也许你可以阅读在Windows注册表中的Adobe Reader键值...可能不是如此万无一失反对不正确的应用程序安装/卸载http:// stackoverflow .com/questions/62289/read-write-to-windows-registry-using-java – eee 2011-04-13 07:32:28

+0

您是否真的需要了解Adobe Reader是否已安装,或只是为了确定浏览器是否可以直接显示PDF? – 2011-04-14 09:16:28

回答

0

在浏览器中运行的唯一解决方案是拥有一个Java applet,并具有正确的安全性检查,检查系统中是否安装了PDF查看器。

0

如果主动-X是禁用试试这个(使用加载一个小的测试隐藏的PDF文档):在头

脚本:

var PDFOK = true; 
function PDFLoadError() { 
    PDFOK = false; 
} 

在身体某处然后:

<object height=0 width=0 type="application/pdf" data="pdf/AdobeAcrobatReaderTestFile.pdf" id=Object1 onerror="PDFLoadError()"> 
    <param name="src" value="AdobeAcrobatReaderTestFile.pdf"> 
</object> 

而在html文档的末尾(</body>之前):

if (!PDFOK) { 
    // PDF reader is not installed... 
} 

如果已启用ActiveX,请使用此代码段从任何浏览器进行检测。对于IE使用ActiveX进行检查,对于使用navigator.plugins的其他浏览器。

<script type="text/javascript"> 
var acrobat=new Object(); 
acrobat.installed=false; 
acrobat.version='0.0'; 

if (navigator.plugins && navigator.plugins.length){ 
    for (var x = 0, l = navigator.plugins.length; x < l; ++x) { 
    if (navigator.plugins[x].description.indexOf('Adobe Acrobat') != -1 || navigator.plugins[x].description.indexOf('PDF') != -1) { 
     acrobat.version=(navigator.plugins[x].description.indexOf('PDF')!=-1)?'7+':parseFloat(navigator.plugins[x].description.split('Version ')[1]); 
     if (acrobat.version.toString().length == 1) acrobat.version+='.0'; 
     acrobat.installed=true; 
     break; 
    } 
    } 
} 
else if (window.ActiveXObject) { 
    for (x=2; x<10; x++) { 
    try { 
     oAcro=eval("new ActiveXObject('PDF.PdfCtrl."+x+"');"); 
     if (oAcro) { 
     acrobat.installed=true; 
     acrobat.version=x+'.0'; 
     } 
    } 
    catch(e) {} 
    } 
    try { 
    oAcro4=new ActiveXObject('PDF.PdfCtrl.1'); 
    if (oAcro4) { 
     acrobat.installed=true; 
     acrobat.version='4.0'; 
    } 
    } 
    catch(e) {} 
    try { 
    oAcro7=new ActiveXObject('AcroPDF.PDF.1'); 
    if (oAcro7) { 
     acrobat.installed=true; 
     acrobat.version='7+'; 
    } 
    } 
    catch(e) {} 
} 

alert (acrobat.version); 
</script> 
+0

-1无论用户是否安装Adobe Reader,无法将PDF文档加载到“object”中都无关紧要。 – RoToRa 2011-04-14 08:39:15

+0

@RoToRa:是的,你说得对,但我想提问者想知道用户浏览器是否可以直接显示PDF,然后做一些相关的操作。这只是试图建议如何在客户端进行检查。也许我错了。 – 2011-04-14 08:59:01

+0

是的,我只是想验证它在客户端是否浏览器支持pdf或不..我会尝试这个soln ..感谢 – techiepark 2011-04-21 10:21:48

0

简单地说:不,这是不可能的。网站不知道用户可能安装或未安装的软件。这将是一个隐私的破坏。

你需要退后一步,解释一下为什么你认为你“必须”知道这一点,那么可能有其他选择,我们可以建议。

请记住,Adobe Reader不是那里唯一的PDF阅读软件。