So zeigen Sie eine PDF-Datei über einen Android-Webbrowser an, ohne sie zuerst herunterzuladen

84

Gibt es eine Möglichkeit, den Standard-Android-Browser dazu zu bringen, eine PDF-, Word- oder andere typische Datei automatisch zu öffnen, ohne den Prozess des Herunterladens der Datei durchlaufen zu müssen und den Benutzer dann dazu zu bringen, die Datei über die Download-App oder die Benachrichtigungsleiste zu öffnen ?

Wir haben eine Webanwendung, die viele Dokumente enthält, die wir einschließen möchten und die nicht in HTML konvertiert werden müssen. Es ist jedoch nicht einfach, Benutzer dazu zu bringen, die Datei herunterzuladen und manuell zu öffnen.

Unter iOS werden diese Dateien alle inline im Browser angezeigt. Ich möchte eine Möglichkeit, den Browser dazu zu bringen, die Dateien automatisch in Acrobat Reader oder QuickOffice oder in einem anderen Programm zu starten, mit dem der Benutzer sie anzeigen muss.

Kennt jemand einen Weg, das zu tun? Ich weiß, dass Google Text & Tabellen Unterstützung für das Anzeigen von PDF-Dateien bietet, aber Benutzer unserer Web-App haben möglicherweise nicht in allen Fällen öffentlichen Internetzugang und greifen möglicherweise auf einen lokalen Webserver zu.

Chris Saldanha
quelle
1
Ich habe noch nie gesehen, dass es so funktioniert. Abgesehen davon würde ich mir vorstellen, dass Sie Ihren eigenen Browser erstellen könnten, der PDF-Dateien dekodieren und richtig anzeigen kann. Ich glaube einfach nicht, dass einer der gängigen Browser dies unterstützt.
FoamyGuy
Sind Ihre PDF-Dateien für "Fast Web View" optimiert? Wenn nicht, können sie nicht angezeigt werden, während der Download noch läuft - daher können sie nur heruntergeladen und dann angezeigt werden.
Robert

Antworten:

65

Sie können PDF in Google Text & Tabellen öffnen, indem Sie die URL an Folgendes anhängen:

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

Dies würde PDF im Standardbrowser oder in einer WebView öffnen.

Eine Liste der unterstützten Formate finden Sie hier .

arsalank2
quelle
4
Das war sehr hilfreich, danke. Ich bin nicht sicher, ob es zu 100% notwendig ist, aber es ist wahrscheinlich erwähnenswert, dass die <URL eines unterstützten Dokuments> urlencodiert sein sollte.
Mason81
1
Dies funktioniert bei mir nicht ... Es wird nur eine Seite "Ups! Es gab ein Problem bei der Vorschau dieses Dokuments" mit einem Download-Button angezeigt. Wenn Sie auf den Download-Button klicken, passiert nichts.
Lee Yi Hong
23
Der obige Link funktionierte nicht für Chrome unter Android, ich wechselte zu https://drive.google.com/viewerng/viewer?embedded=true&url=####und das hat den Job gemacht!
QFDev
2
Hallo, anscheinend funktioniert die URL in der Antwort nicht mehr. Ich bekomme jetzt eine Endlosschleife im WebView-Listener. Die im Kommentar von QFDev veröffentlichte URL funktioniert.
Gene Bo
Dadurch wird das Dokument weiterhin in Ihrem temporären Android-Verzeichnis gespeichert, wenn ich mich richtig erinnere.
Jean-Paul
4

Um das Plugin pdf.js für Firefox zu installieren, verwenden Sie den App Store nicht. Gehen Sie stattdessen von Mozilla aus zu addons.mozilla.org und installieren Sie es von dort aus. Um zu überprüfen, ob es ordnungsgemäß installiert ist, rufen Sie das Menü Extras: Add-Ons auf (nicht die URL "about: plugins", wie Sie es von der Desktop-Version erwarten).

(Neuer Account, sonst würde ich dies als Kommentar zur obigen Antwort setzen)

Jameson Quinn
quelle
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
quelle
3

Ich brauchte das auch und die obigen Links funktionierten nicht mehr. Daher habe ich festgestellt, dass dies mit dem neuen Google Drive funktioniert:

Google hat einen Dienst, der den Link für PDFs erstellt, die nicht in GDrive enthalten sind: https://docs.google.com/viewer Fügen Sie einfach Ihre URL hinzu und es werden ein Link und ein IFrame-Code erstellt (Schauen Sie genau hin und Sie werden das Muster sehen und Links erstellen ohne diesen Webservice)

Es gibt auch eine Möglichkeit, dies für in Google Drive gespeicherte PDFs zu tun: https://docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false&a=v&chrome=false&embedded=true (dies kann ein Link oder der src sein) URL eines Iframes)

Ich habe auf Android getestet und es bringt den PDF-Viewer gut auf.

ubersimple.brad
quelle
Wenn ich derzeit nicht mit einem Google-Konto angemeldet bin, werde ich zu einer Anmeldeseite weitergeleitet. Gibt es eine Möglichkeit, dies zu umgehen und nur das PDF anzuzeigen?
h_k
Versuchen Sie, die Datei viewerjs.org zu verwenden. Die Datei viewer.js sieht vielversprechend aus, da sie browserunabhängig ist und sich darauf verlässt, dass Ihr Server das schwere Heben übernimmt.
user1493559
2

Leider unterstützt der auf Android-Geräten vorhandene native Browser diesen Dateityp nicht. Mal sehen, ob wir das in 4.0 schaffen werden.

Guilherme Oliveira
quelle
2

Sie können dies verwenden

webView.loadUrl("https://docs.google.com/viewer?url=" + "url of pdf file"); 
Akash Bisariya
quelle
Kann jemand bitte den Grund der Ablehnung angeben?
Akash Bisariya
Vielleicht gilt Ihre Antwort für einige Programmiertechniken, und die Antwort könnte nur die URL sein, selbst ich kann sie in ein Ankertag einfügen, das bereits oben erwähnt wurde
Siddaram H
@akash Vielleicht brauchst du weitere Erklärungen. es sind die Regeln hier
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
quelle
setPluginState ON ist wichtig, danke, dass ich es erwähne
Beeing Jk
@BeeingJk setPluginStateist von API 18 ( stackoverflow.com/questions/19362049/… ) veraltet .
CoolMind
@CoolMind, was Sie in Link gezeigt haben, ist setPluginsEnabledeher alssetPluginState
Beeing Jk
@BeeingJk, bitte öffnen Sie die Seite erneut, drücken Sie Strg + F, schreiben Sie "setPluginState" und drücken Sie die Eingabetaste.
CoolMind
@CoolMind ok danke ich habe es auch hier gesehen, developer.android.com/reference/android/webkit/… , aber ich konnte nicht entfernen, setPluginStatesonst funktioniert meine Webansicht nicht
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
quelle
-4
  • Laden Sie die APK-Datei des Acrobat Readers herunter, damit Android die PDF-Datei anzeigt
  • Legen Sie Ihre PDF-Dateien auf eine SD-Karte
  • Verwenden Sie den folgenden Codeausschnitt

    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);
unbekannt
quelle
4
Dies ist für einen Webbrowser, keine native Android-Anwendung. -1
Ryandawkins