android 无法将pdf文件从手机存储加载到活动中[重复]

xam8gpfp  于 2023-03-16  发布在  Android
关注(0)|答案(1)|浏览(150)

此问题在此处已有答案

How can I display a pdf document into a Webview?(12个答案)
5天前关闭。
这篇文章是昨天编辑并提交审查的。
我已经尝试了很多加载pdf文件从本地存储到内部的webview。我已经显示了下面的实现。请检查,让我知道你是否可以指导我

webView.settings.javaScriptEnabled = true
        webView.settings.builtInZoomControls = true

        webView.webViewClient = object : WebViewClient() {
            override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
                super.onPageStarted(view, url, favicon)
            }
            override fun onPageFinished(view: WebView?, url: String?) {
                // PDF file has finished loading
                val test = url
//                Toast.makeText(this, url, Toast.LENGTH_SHORT).show()
            }

            override fun onReceivedError(view: WebView?, request: WebResourceRequest?, error: WebResourceError?) {
                // An error has occurred while loading the PDF file
                val test = error?.description
            }

        }

        // Load the PDF file into the WebView
        try {

            val inputStream = assets.open("test.pdf")
            val data = ByteArray(inputStream.available())
            inputStream.read(data)
            inputStream.close()

            val base64 :String  = android.util.Base64.encodeToString(
                data, android.util.Base64.DEFAULT)
            val mimeType = "application/pdf"
            val encoding = "utf-8"
            val html = "<iframe src='data:$mimeType;base64,$base64' " +
                    "width='100%' height='100%' " +
                    "style='border: none;'></iframe>"
            webView.loadData(html, mimeType, encoding)
        } catch (e: Exception) {
            e.printStackTrace()
            Log.e("TAG", e.toString())
        }

清单权限

<uses-permission android:name="android.permission.INTERNET" />
9gm1akwq

9gm1akwq1#

我尝试在WebView中打开PDF,但它不工作,所以我认为它不支持它。
但是您可以使用pdf.jsHere是一个演示。
您也可以使用PdfRenderer类,但我认为它只呈现一个页面。
另一个选项是将PDF转换为HTML,例如LibreOffice Draw可以做到这一点。
您也可以将PDF文件上传到Google驱动程序,然后在WebView中查看此URL。

相关问题