ローカル(SD カード)の PDF ファイルを WebView で開きたいです。
私はすでにこれを試しました:
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());
しかし、まだ開かないので、WebView で PDF を開く方法を教えてください。
ベストアンサー1
わかっています、この質問は古いです。
しかし、Mozillaのpdf.jsを利用するXamarinのアプローチは本当に気に入っています。これは古いAndroidバージョンでも動作し、特別なPDFビューアアプリは必要なく、簡単にPDFを表示できます。内部アプリのビュー階層。
これのためのGit:https://mozilla.github.io/pdf.js/
追加のデフォルト オプション (標準ズームなど):https://github.com/mozilla/pdf.js/wiki/Viewer-options
Assets ディレクトリに 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() + "#zoom=page-width");
クールなこと:機能やコントロールの数を減らしたい場合は、Assets/pdfjs/web/viewer.htmlファイルに移動し、特定のコントロールを非表示としてマークします。
style="display: none;"
たとえば、右側のツールバーが気に入らない場合:
<div id="toolbarViewerRight" style="display: none;">...</div>
アップデート
「URL スキーム「file」はサポートされていません」
pdfjs の新しいバージョンで発生する可能性があります。バージョンでは1.8.188
このエラーは表示されません。