如何使用Kotlin解码base64 PDF字符串并在Android WebView中展示
解决方案
1. WebView基础配置
首先对要加载PDF的WebView做必要参数配置,Kotlin代码如下:
webView.apply { // 开启JS支持,满足WebView内置PDF渲染逻辑的运行要求 settings.javaScriptEnabled = true // 禁止本地文件访问,符合项目不读写本地存储的要求 settings.allowFileAccess = false settings.loadWithOverviewMode = true settings.useWideViewPort = true // 可选:开启缩放控制 settings.builtInZoomControls = true settings.displayZoomControls = false } // 禁止PDF跳转系统浏览器打开,强制在当前WebView内加载 webView.webViewClient = WebViewClient()
2. 加载Base64格式PDF
无需将Base64解码存本地,直接拼接标准数据URI后加载即可:
// 替换为你从接口获取的Base64格式PDF字符串 val rawBase64Pdf = "JVBERi0xLjcNJeLjz9MNCjI1IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9GaXJzdCA5L0xlbmd0aCAxNjAvTiAyL1R5cGUvT2JqU3RtPj5zdHJlYW0NChmTCzbz2u1ECXhRoEhFO5hqM5RwR4FRuV0pXQ0mGWWQhxuo9vSP+sli4xR6MLwMRkd6pwDn4OCx61I2M+jEkDjUoe+v7TZrF7OuB/XqWmXaqR172e28BVjvMkUI64XPyfMCCAPOxfrw0LXOuYjvKnkZix9v5fSJOvwWJV2LNki2C2+ZwO5JBjHYob8BYWEh39N1A2GAj/n5AAzXIZB2v..." // 清理Base64字符串中可能存在的换行、空格等无效字符 val cleanedBase64 = rawBase64Pdf.replace("\\s".toRegex(), "") // 拼接标准PDF数据URI val loadUri = "data:application/pdf;base64,${cleanedBase64}" // 直接加载到WebView webView.loadUrl(loadUri)
适配说明
- 该方案仅依赖Android系统自带的WebView能力,未引入任何第三方依赖,也不会将PDF文件写入本地存储,完全符合项目限制要求。
- 如果需要兼容低版本系统WebView的PDF渲染能力,可将PDF渲染所需的JS逻辑内联到HTML字符串中,调用
webView.loadData()直接加载HTML内容即可,不需要引入外部资源。
内容的提问来源于stack exchange,提问作者Thejani Saranaguptha
相关产品推荐
相关产品推荐

