Открыть PDF в WebView - программирование
Подтвердить что ты не робот

Открыть PDF в WebView

Я хочу открыть 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;
        }   } }
4b9b3361

Ответ 1

(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'

Ответ 2

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

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

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

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

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

введите описание изображения здесь

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

// 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>

Ответ 3

Вы можете попробовать это. это работает и для .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);

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

Это откроет встроенное приложение (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))));