Come visualizzare un PDF tramite browser Web Android senza prima "scaricarlo"


92

C'è un modo per far sì che il browser Android di serie apra automaticamente un PDF, Word o un altro file tipico senza dover passare attraverso il processo di download del file e quindi convincere l'utente ad aprire il file dall'app Download o dalla barra di notifica ?

Abbiamo un'applicazione web che ha molti documenti che vorremmo includere e non dobbiamo convertirli in HTML, ma fare in modo che l'utente scarichi il file e lo apra manualmente non è facile addestrare gli utenti.

Su iOS, questi file vengono tutti visualizzati in linea nel browser. Vorrei un modo per far sì che il browser avvii automaticamente i file in Acrobat Reader o QuickOffice o in qualsiasi programma l'utente deve visualizzarli.

Qualcuno sa un modo per farlo? So che Google Docs ha un po 'di supporto per la visualizzazione di PDF, ma le persone che utilizzano la nostra app web potrebbero non avere accesso a Internet pubblico in tutti i casi e potrebbero fare clic su un server web locale.


1
Non l'ho mai visto funzionare in questo modo. Detto questo, immagino che potresti creare il tuo browser in grado di decodificare e visualizzare correttamente i file pdf. Semplicemente non credo che nessuno dei browser più diffusi lo supporti.
FoamyGuy

I tuoi file PDF sono ottimizzati per "Fast Web View"? In caso contrario, non possono essere visualizzati mentre il download è ancora in corso, quindi possono essere solo scaricati e quindi visualizzati.
Robert

Risposte:


66

Puoi aprire PDF in Google Docs Viewer aggiungendo l'URL a:

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

Questo aprirebbe il PDF nel browser predefinito o in una visualizzazione Web.

Un elenco dei formati supportati è fornito qui .


4
È stato molto utile, grazie. Non sono sicuro che sia necessario al 100%, ma probabilmente vale la pena ricordare che l '<url di un documento supportato> dovrebbe essere codificato in url.
mason81

2
Questo non funziona per me ... Visualizza solo una pagina "Oops! Si è verificato un problema durante l'anteprima di questo documento" con un pulsante di download. Non succede nulla quando fai clic sul pulsante di download.
Lee Yi Hong

25
Il link sopra non ha funzionato per Chrome su Android, sono passato a https://drive.google.com/viewerng/viewer?embedded=true&url=####e ha funzionato!
QFDev

2
Ciao, sembra che l'URL nella risposta non funzioni più. Ora ottengo un ciclo infinito con esso nel listener webView. L'URL pubblicato nel commento da QFDev funziona.
Gene Bo

Questo salva ancora il documento nella tua directory Android temporanea se ricordo correttamente.
Jean-Paul,


4

In particolare, per installare il plugin pdf.js per Firefox, non utilizzi l'app store. Invece, vai su addons.mozilla.org da mozilla e installalo da lì. Inoltre, per vedere se è installato correttamente, vai al menu Strumenti: Componenti aggiuntivi (non l'URL "about: plugins" come potresti pensare dalla versione desktop).

(Nuovo account, altrimenti lo metterei come commento alla risposta sopra)


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);

3

Anche io avevo bisogno di questo, e i collegamenti sopra hanno smesso di funzionare, quindi questo è ciò che ho scoperto funzionare con il nuovo Google Drive:

Google ha un servizio che crea il collegamento per PDF non in GDrive: https://docs.google.com/viewer Aggiungi semplicemente il tuo URL e crea un collegamento e il codice IFrame (guarda attentamente e vedrai lo schema e creerai collegamenti senza questo servizio web)

Inoltre, c'è un modo per farlo per i PDF archiviati in Google Drive: https://docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false&a=v&chrome=false&embedded=true (questo può essere un link o il src URL di un iframe)

Ho provato su Android e fa apparire il visualizzatore di PDF in modo piacevole.


Per me, se non sono attualmente connesso con un account Google, mi porta a una pagina di accesso. C'è un modo per aggirare questo e visualizzare semplicemente il pdf?
h_k

Prova a utilizzare viewerjs.org Il file viewer.js sembra promettente perché è indipendente dal browser e si basa sul tuo server per fare il lavoro pesante.
user1493559

2

Purtroppo il browser nativo presente sui dispositivi Android non supporta questo tipo di file. Vediamo se nel 4.0 saremo in grado di farlo.


2

Puoi usarlo

webView.loadUrl("https://docs.google.com/viewer?url=" + "url of pdf file"); 

qualcuno può per favore menzionare il motivo del downvoting.
Akash Bisariya

Potrebbe essere, la tua risposta è valida per alcune tecniche di programmazione e la risposta potrebbe essere solo l'URL, anche io posso aggiungerlo in un tag di ancoraggio, che è già menzionato sopra
Siddaram H

@akash forse hai bisogno di aggiungere ulteriori spiegazioni. sono le regole qui
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)");

setPluginState ON è importante, grazie per averlo menzionato
Beeing Jk

@BeeingJk, setPluginStateè deprecato dall'API 18 ( stackoverflow.com/questions/19362049/… ).
CoolMind

@CoolMind quello che hai mostrato nel link è setPluginsEnabledpiuttosto chesetPluginState
Beeing Jk

@BeeingJk, per favore, apri di nuovo la pagina, premi Ctrl + F, scrivi "setPluginState" e premi Invio.
CoolMind

@CoolMind ok grazie l'ho visto anche qui, developer.android.com/reference/android/webkit/… , ma non potrei rimuovere setPluginStatealtrimenti la mia visualizzazione web non funzionerà
Beeing Jk

1
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);
    }
}

-5
  • Scarica il file .apk di acrobat reader per Android per visualizzare il file pdf
  • Metti i tuoi file pdf su una scheda SD
  • Utilizza lo snippet di codice di seguito

    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);
    

4
Questo è per un browser web, non per un'applicazione Android nativa. -1
ryandawkins
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.