Подтвердить что ты не робот

Как открыть локальный файл PDF в WebView на Android?

Я хочу открыть файл PDF с локальным SD-картой в 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());

Но он все еще не открывает его, поэтому дайте мне знать, как я могу открыть PDF файл в WebView?

4b9b3361

Ответ 1

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

Но мне очень нравится подход 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() + "#zoom=page-width");

Прохладная вещь: Если вы хотите уменьшить количество функциональных возможностей/элементов управления. Перейдите в файл Assets/pdfjs/web/viewer.html и отметьте определенные элементы управления как скрытые. С

style="display: none;"

например. Если вам не нравится панель инструментов справа:

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

Ответ 2

Как сказал @Sameer в вашем комментарии выше, единственным решением для просмотра PDF в веб-просмотре является просмотрщик документов Google Docs, который будет отображать и отправлять обратно читаемую версию в ваше приложение.

Ранее обсуждалось здесь

Ответ 3

Вы не можете. Используя намерение, вы можете открыть PDF файл в приложении внешнего просмотра, таком как 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();
}

Ответ 4

WebView не может открыть файл .pdf. Самое популярное решение (URL-адрес google + url + url в WebView) показывает, что вы конвертировали изображения google docs. Однако до сих пор нет простого способа открыть .pdf из url.