javascript - habilitar - No se puede iniciar un archivo pdf en un navegador interno en Android
javascript chrome (5)
A diferencia de iOS, que tiene un visor de PDF incorporado: la vista web de Android no tiene un visor de PDF incorporado.
Es por eso que va a fallar en Android.
Tienes 2 opciones en Android:
Vea el archivo usando Google Docs almacenando el archivo en un servidor remoto y redirigiendo al usuario como
window.open(encodeURI(''https://docs.google.com/gview?embedded=true&url=http://www.your-server.com/files/your_file.pdf''), ''_blank'', ''location=yes,EnableViewPortScale=yes'');
:window.open(encodeURI(''https://docs.google.com/gview?embedded=true&url=http://www.your-server.com/files/your_file.pdf''), ''_blank'', ''location=yes,EnableViewPortScale=yes'');
O use un complemento de Cordova. Por ejemplo, este (puede buscar en Google para obtener más información). Para esto, deberá aprender cómo crear complementos de Cordova en Worklight .
Puede leer más opciones aquí: Phonegap InAppBrowser display pdf 2.7.0
Tengo un requisito para mostrar un pdf en un navegador interno cuando el usuario hace clic en un enlace. Está funcionando bien en iOS pero no funciona en Android. Estoy utilizando IBM Worklight para mi proyecto. A continuación está el código que he usado:
window.open("pdfURL","_blank","location=yes");
En iOS, el navegador se inicia y muestra el pdf, pero en Android se inicia el navegador interno, pero no se muestra contenido
Intenta usar
window.open(''pdfURL'',"_system","location=yes,enableViewportScale=yes,hidden=no");
donde using _system
descargará el archivo y lo abrirá en la aplicación del sistema como Chrome u otros lectores de PDF.
Prueba este código, está funcionando bien para mí.
var inAppBrowserRef;
var target = "_system";
var options = "location=yes,hidden=no,enableViewportScale=yes,toolbar=no,hardwareback=yes";
inAppBrowserRef = cordova.InAppBrowser.open(url, target, options);
Usar google drive viewer parece una buena opción rápida.
Pero en el futuro pueden cambiar o depreciar su API y tendrás que encontrar una nueva forma de respaldar esto. También la seguridad es otra consideración aquí ya que su archivo está disponible públicamente y se puede descargar.
Tuve una situación similar en un proyecto reciente y lo resolvimos usando: pdf.js
Este es un analizador de PDF basado en JS con un buen conjunto de funcionalidades de lectura ... no es tan sencillo como uno nativo, pero hizo el trabajo por nosotros. Su principal ventaja es que teníamos el control sobre los códigos y pudimos abrir archivos desde el sistema de archivos del dispositivo.
Si quieres ir a una ruta in-app más nativa, entonces como @Idan Adar mencionó un plugin de biblioteca nativa + cordova es el camino a seguir.
Utilice uriEncodeComponent (enlace) y https://docs.google.com/viewer?url= enlace
Doc, Excel, Powerpoint y pdf son compatibles.
Usa el cordova en el navegador de la aplicación.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
window.open = cordova.InAppBrowser.open;
}
$("body").on("click",function(e){
var clicked = $(e.target);
if(clicked.is(''a, a *''))
{
clicked = clicked.closest("a");
var link = clicked.attr("href");
if(link.indexOf("https://") !== -1)
{
if(true) //use to be able to determine browser from app
{
link = "http://docs.google.com/viewer?url=" + encodeURIComponent(link) + "&embedded=true";
}
window.open(link, "_blank", "location=no,toolbar=no,hardwareback=yes");
return false;
}
}
});