Android webview открыть pdf

Как я могу отобразить pdf-документ в Webview?

Я хочу отобразить pdf-содержимое в webview. Вот мой код:

Я получаю пустой экран. Я также установил интернет-разрешение.

Вы можете использовать Google Docs Viewer для чтения своего онлайн-документа:

Если вы используете только URL-адрес представления, пользователь не может войти в учетную запись google.

Вы можете использовать проект Mozilla pdf.js. В основном это покажет вам PDF. Взгляните на их пример .

Я использую его только в браузере (рабочий стол и мобильный), и он работает нормально.

Здесь загрузите progressDialog. Необходимо предоставить WebClient, иначе он заставит открываться в браузере:

Загрузите исходный код отсюда ( Open pdf в веб-обозревателе Android )

activity_main.xml

MainActivity.java

Это фактическое ограничение использования, которое разрешает Google, прежде чем вы получите ошибку, упомянутую в комментариях , если это один раз в жизни pdf, который пользователь откроет в приложении, тогда я чувствую его полностью безопасным. Хотя рекомендуется следовать собственному подходу, используя встроенную инфраструктуру Android от Android 5.0 / Lollipop, это называется PDFRenderer .

Открытие pdf-документа с помощью google docs – плохая идея с точки зрения пользовательского опыта. Это очень медленно и не реагирует.

Решение после API 21 С api 21 у нас есть PdfRenderer, который помогает конвертировать PDF в Bitmap.

Я никогда не использовал его, но кажется, что он достаточно прост.

Решение для любого уровня api. Другое решение – загрузить PDF-файл и передать его через Intent в специальное приложение PDF, которое будет выполнять работу с флагом, отображая его. Быстрая и приятная работа с пользователем, особенно если эта функция не является центральной в вашем приложении.

Используйте этот код для загрузки и открытия PDF-файла

Для того, чтобы Intent работал, вам нужно создать FileProvider, чтобы предоставить разрешение получающему приложению для открытия файла. https://developer.android.com/reference/android/support/v4/content/FileProvider.html

Вот как вы его реализуете: в вашем манифесте:

Источник

Как открыть локальный файл pdf в webview в android?

Я хочу открыть файл (pdf) в локальной сети (sdcard) в webview.

Я уже пытаюсь это сделать, а также многие пытаются:

Но все равно не открывайте его, поэтому дайте мне знать, как я могу открыть pdf в webview?

С уважением, Girish

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

Но мне очень нравится подход Xamarin, чтобы использовать pdf.js из Mozilla. Он работает на более ранних версиях Android, для этого вам не требуется специальное приложение для просмотра PDF, и вы можете легко отображать PDF внутри иерархии представлений ваших приложений.

Читайте также:  Open pdf file android studio

Дополнительные параметры по умолчанию (например, стандартный масштаб): https://github.com/mozilla/pdf.js/wiki/Viewer-options

Просто добавьте файлы pdfjs в каталог «Активы»:

И назовите его следующим образом:

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

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

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

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

  • Открыть PDF в WebView
  • Откройте файл PDF внутри веб-представления.

Ты не можешь. Используя намерение, вы можете открыть PDF-файл в приложении внешнего просмотра, таком как Acrobat Reader:

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

Источник

Открыть PDF в WebView

Я хочу открыть PDF-файл в моем WebView, и я нашел и скомбинировал коды на этом форуме.

Но он выдает сообщение «Приложение PDF не найдено», хотя у меня установлено несколько приложений PDF, включая Adobe Reader.

7 ответов

(1) Google Docs Viewer, вы можете открыть его в браузере Android, например,

Обновление:

(2) Проверьте эту библиотеку, в build.gradle (модуль приложения) добавьте эта зависимость,

Эта работа для меня

Старый URL-адрес не работает, используйте этот новый URL-адрес

Я думаю, что у этого есть предел, поэтому лучший способ — напрямую запустить намерение в приложении для просмотра pdf, если нет приложения для запуска pdf, тогда используйте веб-просмотр.

Если вы пытаетесь просмотреть PDF-файл с URL-адресом, но не получаете доступ к содержимому, требующему аутентификации, лучшим вариантом будет:

Браузер делегирует открытие документа программе просмотра PDF на устройстве.

Вы можете попробовать это. он работает как для .pdf , так и для .docx

Обновление: откроется встроенное приложение (средство просмотра PDF) для отображения файла PDF, если ОС> = Marshmallow (API 23), в противном случае откроется браузер для отображения PDF с использованием сервера «docs.google.com».

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

Но мне очень нравится подход Xamarin к использованию pdf.js из Mozilla. Он работает на более старых версиях Android, для этого вам не нужно специальное приложение PDF Viewer, и вы можете легко отображать PDF-файл внутри иерархии представлений ваших приложений.

Просто добавьте файлы pdfjs в каталог Assets:

И назовите это так:

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

Читайте также:  Как взломать версию андроид

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

Источник

Открыть PDF в WebView

Я хочу открыть PDF в своем WebView, и я нашел и комбинировал коды на этом форуме.

Но он ловит “Не найденное приложение PDF”, хотя у меня установлено несколько приложений PDF, включая Adobe Reader.

(1) Google Docs Viewer, вы можете открыть его в браузере Android, как,

Обновить:

(2) Проверьте эту библиотеку, в build.gradle (модуль приложения) добавьте эту зависимость,

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

Но мне очень нравится подход Xamarin, чтобы использовать pdf.js из Mozilla. Он работает на более ранних версиях Android, для этого вам не требуется специальное приложение для просмотра PDF, и вы можете легко отображать PDF внутри иерархии представлений приложений.

Просто добавьте файлы pdfjs в каталог “Активы”:

И назовите его следующим образом:

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

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

Вы можете попробовать это. это работает и для .pdf и .docx

Старый URL не работает, используйте этот новый URL

Я думаю, что у этого есть предел, поэтому лучший способ состоит в том, чтобы напрямую запустить намерение в приложении для просмотра PDF, если нет приложения для запуска PDF, тогда используйте веб-просмотр.

Источник

WebView

WebView — это компонент, который позволяет встраивать веб-страницы в приложения, своеобразный мини-браузер. Находится в разделе Containers.

В старых версиях Android WebView использовал движок WebKit. В Android 4.4 он стал использовать движок Chromium или Blink. В Android 5 появилось отдельное приложение System WebView, которое можно скачать из Play Market. Такое разделение позволило обновлять движок без обновления системы. На этом приключения не закончились. В Android 7.0 уже используется движок Chrome, а если этого браузера на устройстве нет, то используется System WebView. Подобные выкрутасы не прошли даром, программисты часто жалуются, что какой-то кусок кода не работает. Приходится проверять работу на разных устройствах.

Надеюсь, вы уже познакомились с базовым примером по созданию собственного браузера. Рассмотрим дополнительные возможности элемента WebView.

Загружаем локальные страницы и картинки

Если вы хотите загружать в WebView страницы не из интернета, а со своего приложения, то разместите нужные файлы в папке assets, например, assets/mypage.html. Доступ к файлу вы можете получить через конструкцию file://android_asset:

Аналогично поступаем с картинками, которые встречаются в html-файле

Также можно загрузить файл из папки res/raw:

Если картинка находится на внешнем накопителе, то попробуйте вариант:

Недавно наткнулся на фрагмент кода, где нужно добавить несколько новых настроек для работы с файлами. Пример для Kotlin.

Читайте также:  Все гаджеты для андроид

Загружаем данные при помощи loadData() и loadDataWithBaseURL()

Данные можно загрузить с помощью метода loadData():

Если текст простой, то этот способ подойдёт. Но в данном примере встречается символ процента, который относится к спецсимволам и часть текста может оказаться недоступной. Если в тексте встречаются подобные символы, то лучше использовать метод loadDataWithBaseURL():

Если вам приходится использовать loadData(), то спецсимволы можно заменить при помощи метода replace():

Проблемы с кодировкой

У меня есть программа в Google Play, использующая WebView. К моему удивлению, некоторые пользователи жаловались, что текст нечитаем, так как они видят только кракозябры. Особенно много жалоб было от пользователей с планшетами. Оказалось, что проблема довольна распространённая и обсуждается на форумах. Танцы с бубнами (установка явной кодировки UTF-8) не помогают. Нашёл один ответ, который у некоторых заработал, на всякий случай я его здесь оставлю.

Но я рекомендую просто использовать метод loadDataWithBaseURL(). Работает стабильно.

Методы

У WebView есть множество методов, которые позволяют добиваться полной функциональности как у обычного браузера — обновить страницу, перейти на предыдущую страницу и т.д. Часть методов представлена ниже:

Используем зум для просмотра

Не забывайте, что WebView можно использовать не только для просмотра html-страниц, но и для просмотра изображений. Поэтому данный компонент вполне можно использовать просмотра картинок с котиками, к тому же вы можете включить встроенный механизм масштабирования:

Прозрачность

Устанавливать прозрачность лучше программно. Встречал жалобы, что через XML это свойство не работает.

WebView в Lollipop

В Android 5.0 компонент доступен в Google Play (Android System WebView) и его можно обновлять на устройстве.

Компонент теперь основывается на движке Chromium и поддерживает следующие новинки.

Можно ознакомиться с некоторыми примерами — GoogleChrome/chromium-webview-samples. Там есть примеры с WebRTC, полноэкранным режимом, касаниями экрана, выбора файла, работой с JavaScript-сценариями.

Кроме того, стал доступен Safe Browsing — механизм, предупреждающий об опасных ссылках. Включается через манифест.

Советы

Если вы заметили, что экран мерцает во время загрузки WebView, то поменяйте фон. Мерцание происходит из-за смены фона приложения (темы), на белый фон по умолчанию для WebView, а потом на фон, который прописан на странице.

Касания экрана

Так как поддерживаются касания экрана, то старайтесь использовать на веб-странице визуальные эффекты нажатия кнопок и других элементов при помощи псевдокласса :active, например, так:

Настройки

В API 24 появилась возможность открыть окно настроек и выбрать движок для WebView:

Ночной режим

Появилась поддержка тёмной темы в последних версиях WebView.

За ночной режим отвечает класс WebViewFeature, который имеет в своём составе коллекцию различных возможностей. Проверить поддержку той или иной возможности можно через isFeatureSupported().

Всего три варианта для тёмной темы.

  • FORCE_DARK_OFF
  • FORCE_DARK_AUTO
  • FORCE_DARK_ON

Источник

Оцените статью