2011-04-13 55 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閱讀軟件。