2012-07-23 60 views
13

Quiero abrir el archivo PDF local (tarjeta SD) en una WebView.¿Cómo abrir un archivo PDF local en WebView en Android?

ya he intentado esto:

webview = (WebView) findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.getSettings().setPluginsEnabled(true); 
webview.getSettings().setAllowFileAccess(true); 
File file = new File(Environment.getExternalStorageDirectory() + "/test.pdf"); 

final Uri uri = Uri.fromFile(file); 

webview.loadUrl(uri.toString()); 

Pero todavía no es abrirlo, por lo que quisiera saber cómo puedo abrir un archivo PDF en vista web?

+0

probar este webview.loadUrl ("http://docs.google.com/gview?embedded=true&url=http://myurl.com/demo.pdf "); – Sameer

+0

¿Encontró una solución? –

Respuesta

3

No puede. Utilizando una intención, puede abrir el PDF en una aplicación de visualización externo, como Acrobat Reader:

try 
{ 
Intent intentUrl = new Intent(Intent.ACTION_VIEW); 
intentUrl.setDataAndType(uri, "application/pdf"); 
intentUrl.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
mActivity.startActivity(intentUrl); 
} 
catch (ActivityNotFoundException e) 
{ 
Toast.makeText(mActivity, "No PDF Viewer Installed", Toast.LENGTH_LONG).show(); 
} 
+0

@ CSmith.thanks por respuesta ... pero quiero abrir en webview no en la aplicación pdf ... –

4

Como @Sameer respondió en su comentario anterior, la única solución para ver PDF en vista web es a través de visor en línea Google Docs', que renderizará y enviará una versión legible a su aplicación.

anteriormente discutidas aquí

+1

¿Funciona esto para un pdf colocado localmente en su dispositivo ... ?? –

+0

@androidsanta nop, debía cargarse desde la web. –

+0

Esto funciona solo con un PDF remoto.Si desea abrir un archivo local como @ girishce26, debe usar la solución de CSmith o este complemento externo https://github.com/JoanZapata/android-pdfview – tryp

0

vista Web no puede abrir un archivo .pdf. La solución más popular (la URL de Google Docs + su URL en WebView) solo muestra las imágenes convertidas por Google Docs. Sin embargo, todavía no hay una manera simple de abrir .pdf desde url.

11

Lo sé, esta pregunta es anterior.

Pero realmente me gusta el enfoque de Xamarin para hacer uso del pdf.js de Mozilla. Funciona en versiones anteriores de Android, no necesita una aplicación especial de PDF Viewer para esto y puede visualizar fácilmente un PDF dentro de de su jerarquía de vistas de aplicaciones.

Git para esto: https://mozilla.github.io/pdf.js/

opciones adicionales por defecto (como el zoom estándar): https://github.com/mozilla/pdf.js/wiki/Viewer-options

Sólo tiene que añadir los archivos pdfjs a su directorio de Activos:

enter image description here

Y la llamada de la siguiente manera:

// Assuming you got your pdf file: 
File file = new File(Environment.getExternalStorageDirectory() + "/test.pdf"); 

webview = (WebView) findViewById(R.id.webview); 
WebSettings settings = webview.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setAllowFileAccessFromFileURLs(true); 
settings.setAllowUniversalAccessFromFileURLs(true); 
settings.setBuiltInZoomControls(true); 
webview.setWebChromeClient(new WebChromeClient()); 
webview.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + file.getAbsolutePath() + "#zoom=page-width"); 

Cosa interesante: si desea reducir la cantidad de funciones/controles. Vaya al archivo Assets/pdfjs/web/viewer.html y marque ciertos controles como ocultos. Con

style="display: none;" 

E.g. Si no te gusta la barra de herramientas derecha:

<div id="toolbarViewerRight" style="display: none;">...</div> 
+0

Respuesta impresionante :) –

+0

¿Puede el pdf dentro de la carpeta de activos del proyecto Android ser ¿Opnened? – CGR

+0

@CGR Necesitará una referencia de archivo, que también debe estar disponible para el script, por lo que tal vez necesite copiar el archivo localmente desde la carpeta de activos primero: https://stackoverflow.com/a/38504987 – Lepidopteron

Cuestiones relacionadas