Pregunta

Uso un IFrame para ver un documento PDF cuando se hace clic en un enlace dentro de ese IFrame. Sin embargo, en máquinas sin lector, el enlace solicitará la descarga. ¿Hay alguna manera de que el mismo enlace pueda solicitar al usuario que descargue un lector cuando no detecta ningún lector? Pensé que había visto esto en alguna parte. Gracias!

¿Fue útil?

Solución

Esto funciona para mí en IE:

<script>
var p;
try {
p = new ActiveXObject('AcroExch.Document');
}
catch (e) {
// active x object could not be created
document.write('doesnt look like the PDF plugin is installed...');
}
if (p) {
    document.write('does look like the pdf plugin is installed!');
}
</script>

Lo encontré aquí. .. pero modificado para eliminar el " ; endif "

Otros consejos

Sé que esta pregunta ya había sido respondida, pero recientemente tuve que crear una función que detecte la presencia del complemento PDF en diferentes navegadores. Esto es lo que conseguí. Con suerte si ayuda.

function hasPdfPlugin() {   
//detect in mimeTypes array
if (navigator.mimeTypes != null && navigator.mimeTypes.length > 0) {        
    for (i = 0; i < navigator.mimeTypes.length; i++) {
        var mtype = navigator.mimeTypes[i];
        if(mtype.type == "application/pdf" && mtype.enabledPlugin)
            return true;
    }
}

//detect in plugins array
if (navigator.plugins != null && navigator.plugins.length > 0) {
    for (i = 0; i < navigator.plugins.length; i++) {
        var plugin = navigator.plugins[i];
        if (plugin.name.indexOf("Adobe Acrobat") > -1
                || plugin.name.indexOf("Adobe Reader") > -1) {
            return true;
        }

    }
} 
// detect IE plugin
if (window.ActiveXObject) {
    // check for presence of newer object       
    try {
        var oAcro7 = new ActiveXObject('AcroPDF.PDF.1');
        if (oAcro7) {
            return true;
        }
    } catch (e) {
    }

    // iterate through version and attempt to create object 
    for (x = 1; x < 10; x++) {
        try {
            var oAcro = eval("new ActiveXObject('PDF.PdfCtrl." + x + "');");
            if (oAcro) {
                return true;
            }
        } catch (e) {
        }
    }

    // check if you can create a generic acrobat document
    try {
        var p = new ActiveXObject('AcroExch.Document');
        if (p) {
            return true;
        }
    } catch (e) {
    }

}

// Can't detect in all other cases
return false;
}

Aquí hay algunos scripts que ayudan a detectar la presencia de Acrobat.

En JavaScript, ¿puedes hacer algo como:

var adobePdfObject = new ActiveXObject("theAdobePdfCOMObject");

y luego detecta un error de falla o el valor de retorno de adobePdfObject?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top