Wie kann ich ein PDF-Dokument in einer Webansicht anzeigen?

Lesezeit: 6 Minuten

Wie kann ich ein PDF Dokument in einer Webansicht anzeigen
shria

Ich möchte PDF-Inhalte in Webview anzeigen. Hier ist mein Code:

WebView webview = new WebView(this); 
setContentView(webview);
webview.getSettings().setJavaScriptEnabled(true); 
webview.loadUrl("http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf");

Ich erhalte einen leeren Bildschirm. Ich habe auch die Internetberechtigung eingestellt.

Wie kann ich ein PDF Dokument in einer Webansicht anzeigen
Anticafe

Sie können Google PDF Viewer verwenden, um Ihre PDF-Datei online zu lesen:

WebView webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true); 
String pdf = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
webview.loadUrl("https://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);

  • Nachdem ich es 2 Tage lang beharrlich getestet hatte, erhielt ich einen Fehler in Google Docs, der besagte You've reached the bandwidth limit for viewing or downloading files that aren't in Google Docs format..... Scheint also nicht zuverlässig zu sein.

    – Shobhit Puri

    7. November 2014 um 15:33 Uhr


  • Die Docs-URL leitet jetzt zu Drive weiter: “drive.google.com/viewerng/viewer?embedded=true&url=

    – Murphy

    26. Dezember 2014 um 22:02 Uhr

  • Diese Lösung ist absolut schrecklich. Die Tatsache, dass so viele von Ihnen erwägen, etwas so Hässliches in Ihre App zu integrieren, macht mir Sorgen. Diese Seite ist für den Desktop konzipiert. Diese Seite ist eindeutig für den Desktop optimiert. Die Verwendung auf dem Handy ist keine gute mobile Erfahrung.

    – erschüttert

    29. April 2016 um 23:58 Uhr

  • Was ist, wenn Sie offline sind?

    – Yerlilbilgin

    5. Januar 2019 um 0:54 Uhr

  • @LyteSpeed ​​Frage mich, warum wir so hässliche Problemumgehungen in unsere Apps einbauen? Ja, du weißt es schon; Googles großes Gehirn Android-Team

    – Farid

    24. Februar 2021 um 17:27 Uhr

Wenn Sie die Nur-Ansicht-URL verwenden, wird der Benutzer nicht aufgefordert, sich bei seinem Google-Konto anzumelden.

https://docs.google.com/viewer?url=http://my.domain.com/yourPdfUrlHere.pdf

  • Es wird nach Login gefragt

    – LincyTonita

    5. November 2020 um 11:24 Uhr

Wie kann ich ein PDF Dokument in einer Webansicht anzeigen
Athira

Verwenden Sie diesen Code

private void pdfOpen(String fileUrl){

        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setPluginState(WebSettings.PluginState.ON);

        //---you need this to prevent the webview from
        // launching another browser when a url
        // redirection occurs---
        webView.setWebViewClient(new Callback());

        webView.loadUrl(
                "http://docs.google.com/gview?embedded=true&url=" + fileUrl);

    }

    private class Callback extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(
                WebView view, String url) {
            return (false);
        }
    }

  • @Athira Kidilam Antwort

    – Samwinishere Hier

    2. Juli 2019 um 12:26 Uhr

  • setPluginState ist jetzt veraltet.

    – Schild

    18. Januar 2021 um 11:16 Uhr

1646317390 594 Wie kann ich ein PDF Dokument in einer Webansicht anzeigen
JDenais

Das Öffnen eines PDFs mit Google Docs ist in Bezug auf die Benutzererfahrung eine schlechte Idee. Es ist wirklich langsam und reagiert nicht.

Lösung nach API 21

Seit API 21 haben wir PdfRenderer was hilft, ein pdf in Bitmap umzuwandeln. Ich habe es nie benutzt, aber es scheint einfach genug zu sein.

Lösung für jede API-Ebene

Eine andere Lösung besteht darin, das PDF herunterzuladen und es über Intent an eine dedizierte PDF-App weiterzuleiten, die es hervorragend anzeigt. Schnelle und angenehme Benutzererfahrung, besonders wenn diese Funktion in Ihrer App nicht zentral ist.

Verwenden Sie diesen Code, um das PDF herunterzuladen und zu öffnen

public class PdfOpenHelper {

public static void openPdfFromUrl(final String pdfUrl, final Activity activity){
    Observable.fromCallable(new Callable<File>() {
        @Override
        public File call() throws Exception {
            try{
                URL url = new URL(pdfUrl);
                URLConnection connection = url.openConnection();
                connection.connect();

                // download the file
                InputStream input = new BufferedInputStream(connection.getInputStream());
                File dir = new File(activity.getFilesDir(), "/shared_pdf");
                dir.mkdir();
                File file = new File(dir, "temp.pdf");
                OutputStream output = new FileOutputStream(file);

                byte data[] = new byte[1024];
                long total = 0;
                int count;
                while ((count = input.read(data)) != -1) {
                    total += count;
                    output.write(data, 0, count);
                }

                output.flush();
                output.close();
                input.close();
                return file;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<File>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(File file) {
                    String authority = activity.getApplicationContext().getPackageName() + ".fileprovider";
                    Uri uriToFile = FileProvider.getUriForFile(activity, authority, file);

                    Intent shareIntent = new Intent(Intent.ACTION_VIEW);
                    shareIntent.setDataAndType(uriToFile, "application/pdf");
                    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    if (shareIntent.resolveActivity(activity.getPackageManager()) != null) {
                        activity.startActivity(shareIntent);
                    }
                }
            });
}

}

Damit die Absicht funktioniert, müssen Sie eine erstellen FileProvider um der empfangenden App die Berechtigung zum Öffnen der Datei zu erteilen.

So implementieren Sie es: In Ihrem Manifest:

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">

        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />

    </provider>

Erstellen Sie abschließend eine file_paths.xml-Datei im Ressourcenordner

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <files-path name="shared_pdf" path="shared_pdf"/>
</paths>

Hoffe das hilft =)

1646317391 718 Wie kann ich ein PDF Dokument in einer Webansicht anzeigen
Naveen Kumar M

Hier mit progressDialog laden. Sie müssen WebClient angeben, da sonst das Öffnen im Browser erzwungen wird:

final ProgressDialog pDialog = new ProgressDialog(context);
    pDialog.setTitle(context.getString(R.string.app_name));
    pDialog.setMessage("Loading...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);
    WebView webView = (WebView) rootView.findViewById(R.id.web_view);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            pDialog.show();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            pDialog.dismiss();
        }
    });
    String pdf = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
    webView.loadUrl("https://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);

  • Wie kann ich die Suchfunktion für PDF in der Webansicht aktivieren

    – Anant Schah

    7. November 2019 um 7:14 Uhr

1646317391 982 Wie kann ich ein PDF Dokument in einer Webansicht anzeigen
Sandeep Yohans

Sie können Mozilla verwenden pdf.js Projekt. Grundsätzlich wird Ihnen das PDF angezeigt. Werfen Sie einen Blick auf ihre Beispiel.

Ich benutze es nur im Browser (Desktop und Handy) und es funktioniert gut.

  • Wie kann ich die Suchfunktion für PDF in der Webansicht aktivieren

    – Anant Schah

    7. November 2019 um 7:14 Uhr

Eigentlich waren alle Lösungen ziemlich komplex, und ich habe eine wirklich einfache Lösung gefunden (ich bin mir nicht sicher, ob sie für alle SDK-Versionen verfügbar ist). Das PDF-Dokument wird in einem Vorschaufenster geöffnet, in dem der Benutzer das Dokument anzeigen und speichern/teilen kann:

webView.setDownloadListener(DownloadListener { url, userAgent, contentDisposition, mimetype, contentLength ->
     val i = Intent(Intent.ACTION_QUICK_VIEW)
     i.data = Uri.parse(url)
     if (i.resolveActivity(getPackageManager()) != null) {
            startActivity(i)
     } else {
            val i2 = Intent(Intent.ACTION_VIEW)
            i2.data = Uri.parse(url)
            startActivity(i2)
     }
})

(Kotlin)

  • kann mir Beispielcode für die DownloadListener-Klasse geben

    – mohammedragabmohammedborik

    13. Juni 2019 um 10:17 Uhr

  • @mohammedragabmohammedborik Die DownloadListener-Klasse ist in Android enthalten, Sie benötigen keine zusätzlichen Klassen, um den obigen Code auszuführen.

    – Dio

    24. Juni 2019 um 17:04 Uhr


  • Beachten Sie, dass ACTION_QUICK_VIEW nur ​​von Android N und höher unterstützt wird.

    – Kürbis

    20. September 2019 um 11:53 Uhr

  • @pumpkee Du hast recht, das hat in meinem Fall ein Problem verursacht. Ich habe den obigen Code hinzugefügt, der prüft, ob die Schnellansicht verfügbar ist. Andernfalls würde es im Browser geöffnet werden.

    – Dio

    26. September 2019 um 12:32 Uhr

924280cookie-checkWie kann ich ein PDF-Dokument in einer Webansicht anzeigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy