Открыть PDF в WebView - PullRequest
       58

Открыть PDF в WebView

14 голосов
/ 24 февраля 2012

Я хочу открыть PDF в своем WebView, и я нашел и скомбинировал коды на этом форуме.

Но он ловит «Не найдено приложение PDF», хотя у меня установлено несколько приложений PDF, включая Adobe Reader.

Вот код:

private class PsvWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);

            if (url.contains(".pdf")) {
                Uri path = Uri.parse(url); 
                Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
                pdfIntent.setDataAndType(path, "application/pdf");
                pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                try
                {
                    startActivity(pdfIntent);
                }
                catch(ActivityNotFoundException e)
                {
                    Toast.makeText(PsvWebViewActivity.this, "No PDF application found", Toast.LENGTH_SHORT).show();
                }
                catch(Exception otherException)
                {
                    Toast.makeText(PsvWebViewActivity.this, "Unknown error", Toast.LENGTH_SHORT).show();
                }

            }

            return true;
        }   } }

Ответы [ 6 ]

36 голосов
/ 24 февраля 2012

(1) Google Docs Viewer, вы можете открыть его в браузере Android, как,

mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+ webUrl);

Обновление:

(2) Проверьте эту библиотеку , в build.gradle (модуль приложения) добавьте эту зависимость,

compile 'com.github.barteksc:android-pdf-viewer:2.8.2'
11 голосов
/ 29 марта 2017

Я знаю, этот вопрос старый.

Но мне очень нравится, когда Xamarin использует pdf.js от Mozilla. Он работает на более старых версиях Android, для этого вам не нужно специальное приложение для просмотра PDF, и вы можете легко отобразить PDF в иерархии представлений ваших приложений.

Git для этого: https://mozilla.github.io/pdf.js/

Дополнительные опции: https://github.com/mozilla/pdf.js/wiki/Viewer-options

Просто добавьте файлы pdfjs в каталог Assets:

enter image description here

И назовите это следующим образом:

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

Классная вещь: если вы хотите уменьшить количество функций / элементов управления. Перейдите в файл Assets / pdfjs / web / viewer.html и отметьте некоторые элементы управления как скрытые. С

style="display: none;"

например. Если вам не нравится правильная панель инструментов:

<div id="toolbarViewerRight" style="display: none;">...</div>
1 голос
/ 27 декабря 2018

Обновление: Это откроет встроенное приложение (PDF Viewer) для отображения файла PDF, если OS> = Marshmallow (API 23), в противном случае откроется браузер для отображения PDF с использованием сервера "docs.google.com".

WebView webView = new WebView(this);

    String url = "http://www.pdf995.com/samples/pdf.pdf"; 

    // Support all types of OS versions.
    if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
        webView.loadUrl(url); // This will open it with a built-in PDF viewer app.
    else
        webView.loadUrl("http://docs.google.com/viewerng/viewer?url="+ url); // This will open it with a browser. On Android 5.0 (Api 21 - Lollipop) and bellow.

    // Set Download listener.
    webView.setDownloadListener((url1, userAgent, contentDisposition, mimetype, contentLength)
            -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url1))));
0 голосов
/ 31 января 2019

вы можете попробовать это.работает как для .pdf , так и для .docx

 String pdfUrl = "https://www.abcd.com/assets/uploads/profilepics/abc.pdf"; //your pdf url
 String url = "http://docs.google.com/gview?embedded=true&url=" + pdfUrl;

 WebView webView = findViewById(R.id.webview_cv_viewer);
 webView.getSettings().setSupportZoom(true);
 webView.getSettings().setJavaScriptEnabled(true);
 webView.loadUrl(url);
0 голосов
/ 31 мая 2018

эта работа для меня

webView.loadUrl("https://docs.google.com/viewer?url=" + "url of your pdf"); 
0 голосов
/ 20 марта 2018

Старый URL не работает, используйте этот новый URL

mWebView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url="+ webUrl);

Я думаю, что у этого есть предел, поэтому лучший способ - напрямую запустить намерение в приложении для просмотра PDF, если нет приложения для запуска PDF, используйте веб-просмотр.

...