Cómo mostrar un PDF a través del navegador web de Android sin "descargar" primero

88

¿Hay alguna manera de hacer que el navegador Android estándar abra automáticamente un PDF, Word u otro archivo típico sin tener que pasar por el proceso de descarga del archivo y luego hacer que el usuario abra el archivo desde la aplicación Descargas o la barra de notificaciones? ?

Tenemos una aplicación web que tiene muchos documentos que nos gustaría incluir y no tener que convertirlos a HTML, pero hacer que el usuario descargue el archivo y lo abra manualmente no es fácil para entrenar a los usuarios.

En iOS, todos estos archivos se muestran en línea en el navegador. Me gustaría una forma de hacer que el navegador inicie automáticamente los archivos en Acrobat Reader o QuickOffice o cualquier programa que el usuario tenga para mostrarlos.

¿Alguien sabe una forma de hacer eso? Sé que Google Docs tiene cierto soporte para la visualización de PDF, pero es posible que las personas que usan nuestra aplicación web no tengan acceso público a Internet en todos los casos y es posible que accedan a un servidor web local.

Chris Saldanha
fuente
1
Nunca lo había visto funcionar de esa manera. Dicho esto, me imagino que podría crear su propio navegador que sea capaz de decodificar y mostrar correctamente archivos PDF. Simplemente no creo que ninguno de los navegadores populares lo admita.
FoamyGuy
¿Están optimizados sus archivos PDF para "Vista rápida en Web"? De lo contrario, no se pueden mostrar mientras la descarga aún está en curso; por lo tanto, solo se pueden descargar y luego mostrar.
Robert

Respuestas:

66

Puede abrir PDF en Google Docs Viewer agregando URL a:

http://docs.google.com/gview?embedded=true&url=<url of a supported doc>

Esto abriría PDF en el navegador predeterminado o WebView.

Aquí se proporciona una lista de formatos compatibles .

arsalank2
fuente
4
Esto fue muy útil, gracias. No estoy seguro de que sea 100% necesario, pero probablemente valga la pena mencionar que la <url de un documento compatible> debería estar codificada en urlencoded.
mason81
1
Esto no funciona para mí ... Solo muestra una página "¡Vaya! Hubo un problema al obtener la vista previa de este documento" con un botón de descarga. No pasa nada al hacer clic en el botón de descarga.
Lee Yi Hong
25
El enlace anterior no funcionó para Chrome en Android, me cambié https://drive.google.com/viewerng/viewer?embedded=true&url=####y eso hizo el trabajo.
QFDev
2
Hola, parece que la URL de la respuesta ya no funciona. Obtengo un bucle infinito con él ahora en el oyente webView. La url publicada en el comentario de QFDev está funcionando.
Gene Bo
Esto aún guarda el documento en su directorio temporal de Android si recuerdo correctamente.
Jean-Paul
4

Específicamente, para instalar el complemento pdf.js para Firefox, no usa la tienda de aplicaciones. En su lugar, vaya a addons.mozilla.org desde mozilla e instálelo desde allí. Además, para ver si está instalado correctamente, vaya al menú Herramientas: Complementos (no la URL "acerca de: complementos" como podría pensar en la versión de escritorio).

(Cuenta nueva, de lo contrario, pondría esto como un comentario en la respuesta anterior)

Jameson Quinn
fuente
4
String format = "https://drive.google.com/viewerng/viewer?embedded=true&url=%s";
String fullPath = String.format(Locale.ENGLISH, format, "PDF_URL_HERE");
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(fullPath));
startActivity(browserIntent);
Hamzeh Soboh
fuente
3

Yo también necesitaba esto, y los enlaces anteriores dejaron de funcionar, así que esto es lo que encontré para trabajar con el nuevo Google Drive:

Google tiene un servicio que crea el enlace para PDF que no están en GDrive: https://docs.google.com/viewer Simplemente agregue su URL y creará un enlace y un código IFrame (mire de cerca y verá el patrón y creará enlaces sin este servicio web)

Además, hay una manera de hacerlo para los PDF almacenados en Google Drive: https://docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false&a=v&chrome=false&embedded=true (esto puede ser un enlace o el src URL de un iframe)

Lo he probado en Android y muestra muy bien el visor de PDF.

ubersimple.brad
fuente
Para mí, si actualmente no estoy registrado con una cuenta de Google, entonces me lleva a una página de inicio de sesión. ¿Hay alguna manera de evitar esto y simplemente ver el pdf?
h_k
Intente usar viewerjs.org. El archivo viewer.js parece prometedor porque es independiente del navegador y depende de su servidor para hacer el trabajo pesado.
user1493559
2

Desafortunadamente, el navegador nativo presente en los dispositivos Android no es compatible con este tipo de archivo. Veamos si en la 4.0 podremos hacer eso.

Guilherme Oliveira
fuente
2

Puedes usar esto

webView.loadUrl("https://docs.google.com/viewer?url=" + "url of pdf file"); 
Akash Bisariya
fuente
¿Alguien puede mencionar el motivo de la votación negativa?
Akash Bisariya
Puede ser que su respuesta sea válida para alguna técnica de programación, y la respuesta podría ser solo la URL, incluso yo puedo agregarla a una etiqueta de anclaje, que ya se mencionó anteriormente
Siddaram H
@akash tal vez necesites agregar más explicaciones. son las reglas aquí
huzain07
2
  Try this, worked for me.

    WebView view = (WebView) findViewById(R.id.yourWebView);

    view.getSettings().setJavaScriptEnabled(true);
    view.getSettings().setPluginState(WebSettings.PluginState.ON);
    view.loadUrl("http://docs.google.com/gview?embedded=true&url="
                  +"your document link(pdf,doc,docx...etc)");
parvez rafi
fuente
setPluginState ON es importante, gracias por mencionarlo
Beeing Jk
@BeeingJk, setPluginStateestá en desuso de API 18 ( stackoverflow.com/questions/19362049/… ).
CoolMind
@CoolMind lo que mostró en el enlace es en setPluginsEnabledlugar desetPluginState
Beeing Jk
@BeeingJk, por favor, abra la página nuevamente, presione Ctrl + F, escriba "setPluginState" y presione Enter.
CoolMind
@CoolMind ok, gracias. También lo vi aquí, developer.android.com/reference/android/webkit/… , pero no pude eliminar; de lo setPluginStatecontrario, mi vista web no funcionará
Beeing Jk
0
public class MainActivity extends AppCompatActivity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openURL("http://docs.google.com/viewer?url=" + " your pdf link ");
            }
        });
    }

    private void openURL(String s) {
        Uri uri = Uri.parse(s);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri,"text/html");
        startActivity(intent);
    }
}
Emon Hossain Munna
fuente
-4
  • Descargue el archivo .apk de Acrobat Reader para Android para mostrar el archivo pdf
  • Pon tus archivos pdf en una tarjeta sd
  • Utilice el fragmento de código a continuación

    File file= new File("/sdcard/test.pdf");
    Uri path=Uri.fromFile(file);
    Intent i =new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(path,"application/pdf");
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    
desconocido
fuente
4
Esto es para un navegador web, no para una aplicación nativa de Android. -1
ryandawkins