web-dev-qa-db-fra.com

Ouvrir PDF dans une WebView

Je veux ouvrir un PDF dans mon WebView et j'ai trouvé et combiné des codes sur ce forum.

Mais il détecte le "Non PDF application trouvée" bien que plusieurs PDF applications soient installées, y compris Adobe Reader.

Voici le code:

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;
        }   } }
12
Lars Van de Donk

(1) Google Docs Viewer, vous pouvez l’ouvrir dans le navigateur Android comme,

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

Mettre à jour:

(2) Vérifiez cette bibliothèque , dans build.gradle (module d'application) ajoutez cette dépendance,

compile 'com.github.barteksc:Android-pdf-viewer:2.8.2'
32
Samir Mangroliya

Je sais, cette question est ancienne.

Mais j'aime beaucoup l'approche de Xamarin pour utiliser le pdf.js de Mozilla. Cela fonctionne sur les anciennes versions d'Android, vous n'avez pas besoin d'une application spéciale PDF Viewer pour cela et vous pouvez facilement afficher un PDF dans la hiérarchie de vos vues d'applications.

Git pour cela: https://mozilla.github.io/pdf.js/

Options supplémentaires: https://github.com/mozilla/pdf.js/wiki/Viewer-options

Ajoutez simplement les fichiers pdfjs à votre répertoire Assets:

 enter image description here

Et appelez ça de la manière suivante:

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

Chose cool: Si vous voulez réduire le nombre de fonctionnalités/contrôles. Accédez au fichier Assets/pdfjs/web/viewer.html et marquez certains contrôles comme étant masqués. Avec

style="display: none;"

Par exemple. Si vous n'aimez pas la bonne barre d'outils:

<div id="toolbarViewerRight" style="display: none;">...</div>
11
Lepidopteron

vous pouvez essayer ceci . cela fonctionne pour les deux.pdfet.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
Dinesh Sarma