Я пытаюсь отобразить PDF-файл в WebView< /код>. Я знаю, что WebView не поддерживает обычное отображение PDF, поэтому я использую расширение URL-адреса G-Drive, предложенное в других ответах. Кроме того, бизнес-команда потребовала открыть PDF-файл в самом нашем приложении, чтобы я не мог отправить намерение в другое средство просмотра PDF-файлов. Я скачал библиотеку PdfViewer, но она увеличила размер APK настолько, насколько хотелось.
Этот URL-адрес на самом деле является запросом GET. Каждый раз, когда я нажимаю на запрос, в зависимости от параметров запроса сервер генерирует PDF-файл во время выполнения и немедленно возвращает его, не сохраняя на сервере.
URL PDF-файла:
"http://server_ip_number/pata/retail/v4/reports_pdf ?search=Test&min_amount=0.0&max_amount=0.0" (невозможно раскрыть IP-адрес по соображениям безопасности)
Этот запрос также требует некоторых заголовков для аутентификации, которые Подробно напишу ниже.
Это то, чем я сейчас занимаюсь;
Код: Выделить всё
class AllUsersWebViewActivity : BaseActivity() {
private val pdfActualUrl = "https://drive.google.com/viewerng/viewer?embedded=true&url=http://server_ip_number/pata/retail/v4/reports_pdf?search=Test&min_amount=0.0&max_amount=0.0"
//This random dummy URL opens perfectly, it does not need any headers or GET params, just normal `loadUrl()` works.
private val workingDummyUrl = "https://drive.google.com/viewerng/viewer?embedded=true&url=https://mindorks.s3.ap-south-1.amazonaws.com/courses/MindOrks_Android_Online_Professional_Course-Syllabus.pdf"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_all_users_report_web_view)
wv_web.settings.javaScriptEnabled = true
wv_web.clearCache(true)
wv_web.loadUrl(URLEncoder.encode(pdfUrl, "ISO-8859-1"), mapOf( //map of necessary headers
"Authorization" to "Auth_TOKEN",
"VersionId" to "1.0.0",
"companyID" to "2",
"DeviceId" to "my_device_id",
"token" to "SECURE_TOKEN"
))
}
- Когда Я нажимаю на вышеупомянутый запрос GET с заголовками и параметрами в PostMan, и PDF-файл немедленно загружается.
- Я попробовал тот же запрос GET с помощью DownloadManager PDF-файл со всеми заголовками и параметрами успешно загружен
Но когда я пробую это с помощью WebView, он просто показывает: «Предварительный просмотр недоступен».
Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/619 ... in-webview