Как добиться отображения встроенных PDF-файлов в WebView? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть простой Android-клиент для моего сайта, основанный на WebView.Моя цель - показать или, по крайней мере, загрузить файлы PDF, расположенные на странице.Проблема в том, что эти PDF-файлы встроены (внутри тега embed), а WebView их не отображает.Пример внедренного PDF:

<embed class="my-class" type="application/pdf" src="data:application/pdf;base64,[base64string]">, где [base64string] - представление PDF-файла в формате base64.

Однако браузер Chrome (здесь и далее версия для Android) понимает встроенные PDF-файлы и предлагает их открыть.Насколько я знаю, Chrome и WebView имеют общую кодовую базу, поэтому я думаю, что в моем приложении можно добиться одинакового поведения.

Чтобы убедиться, что у Webview есть проблема с встраиванием PDF, необходимодостаточно, чтобы открыть любой сайт, содержащий такой контент, , например .Скорее всего, вместо PDF-файла вы увидите просто белую пустую рамку с (возможно, без) текстом, например Can't load plugin.Если вы нажмете на этот кадр, ничего не произойдет.Насколько я понимаю, WebView просто не знает, как работать с такими объектами.


Пример экрана Chrome

Пример экрана WebView


Вот вещи, которые я уже сделал, и они не сработали:

  • Я пытался работать с различными настройками WebView:

    webV.settings.javaScriptEnabled = true
    webV.settings.allowFileAccess = true
    webV.settings.pluginState = WebSettings.PluginState.ON
    webV.settings.domStorageEnabled = true
    webV.settings.setAppCacheEnabled (true)
    webV.settings.javaScriptCanOpenWindowsAutomatically = true
    webV.settings.mediaPlaybackRequiresUserGesture = true
    webV.setLayerType (View.LAYER_TYPE_HARDWARE, null)
    
  • Я пытался перехватить загрузку встроенного файла методами WebChromeClient и WebViewClient, но безуспешно.Ресурс встраивания не загружается, поэтому нет событий.И ошибки тоже.

  • Я пробовал Chrome Custom Tabs, они понимают встроенный PDF, но, к сожалению, они не подходят для использования в моем проекте.

Есть ли возможность достичь понимания встроенных файлов PDF с помощью WebView?

...