AndroidのWebViewでローカルPDFファイルを開くにはどうすればいいですか?質問する

AndroidのWebViewでローカルPDFファイルを開くにはどうすればいいですか?質問する

ローカル(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このエラーは表示されません。

おすすめ記事