2012-07-23 23 views
13

Chcę otworzyć lokalny plik PDF (karta SD) w WebView.Jak otworzyć lokalny plik PDF w WebView w systemie Android?

ja już próbowałem:

webview = (WebView) findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.getSettings().setPluginsEnabled(true); 
webview.getSettings().setAllowFileAccess(true); 
File file = new File(Environment.getExternalStorageDirectory() + "/test.pdf"); 

final Uri uri = Uri.fromFile(file); 

webview.loadUrl(uri.toString()); 

ale to wciąż nie to otwarcie, więc daj mi znać jak mogę otworzyć plik PDF w WebView?

+0

Spróbuj webview.loadUrl ("http://docs.google.com/gview?embedded=true&url=http://myurl.com/demo.pdf "); – Sameer

+0

Czy znalazłeś rozwiązanie? –

Odpowiedz

3

Nie możesz. Korzystanie z zamiarem, można otworzyć plik PDF w zewnętrznej aplikacji przeglądarki jak Acrobat Reader:

try 
{ 
Intent intentUrl = new Intent(Intent.ACTION_VIEW); 
intentUrl.setDataAndType(uri, "application/pdf"); 
intentUrl.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
mActivity.startActivity(intentUrl); 
} 
catch (ActivityNotFoundException e) 
{ 
Toast.makeText(mActivity, "No PDF Viewer Installed", Toast.LENGTH_LONG).show(); 
} 
+0

@ CSmith.thanks za odpowiedź .. ale chcę otworzyć w webview nie w aplikacji pdf .. –

4

Jak @Sameer odpowiedział w swoim komentarzu powyżej, jedynym rozwiązaniem, aby zobaczyć pliki PDF w WebView jest przez widza internetowego Google Docs', które wyrenderuje i wyśle ​​czytelną wersję do Twojej aplikacji.

Wcześniej omówione tutaj

+1

Czy to działa na pdf umieszczony lokalnie na urządzeniu ..? –

+0

@androidsanta nop, to miało być załadowane z sieci. –

+0

To działa tylko ze zdalnym plikiem PDF.Jeśli chcesz otworzyć lokalny plik, taki jak @ girishce26, musisz użyć rozwiązania CSmith lub zewnętrznej wtyczki https://github.com/JoanZapata/android-pdfview – tryp

0

WebView nie może otworzyć pliku PDF. Najbardziej popularne rozwiązanie (URL google docs + adres URL w WebView) pokazuje tylko, że konwertowane przez google docs zdjęcia. Jednak nadal nie ma prostego sposobu na otwarcie .pdf z adresu URL.

11

Wiem, to pytanie jest stare.

Ale bardzo podoba mi się podejście Xamarin do korzystania z pdf.js z Mozilli. Działa na starszych wersjach systemu Android, nie potrzebujesz do tego specjalnej aplikacji przeglądarki plików PDF i możesz łatwo wyświetlić PDF wewnątrz hierarchii widoków aplikacji.

Git na to: https://mozilla.github.io/pdf.js/

Dodatkowe opcje domyślne (takie jak standardowy zoom): https://github.com/mozilla/pdf.js/wiki/Viewer-options

wystarczy dodać pliki pdfjs do katalogu Assets:

enter image description here

i zadzwoń to następująco:

// 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() + "#zoom=page-width"); 

Fajna rzecz: jeśli chcesz zmniejszyć ilość funkcji/kontroli. Przejdź do pliku Assets/pdfjs/web/viewer.html i zaznacz wybrane elementy jako ukryte. Z

style="display: none;" 

E.g. Jeśli nie podoba prawego paska narzędzi:

<div id="toolbarViewerRight" style="display: none;">...</div> 
+0

Awesome answer :) –

+0

Czy PDF w folderze zasobów Android Project może być opnened? – CGR

+0

@CGR Potrzebne jest odniesienie do pliku, które również musi być dostępne dla skryptu, więc może najpierw musisz skopiować plik z folderu zasobów: https://stackoverflow.com/a/38504987 – Lepidopteron

Powiązane problemy