前言
Android Jetpack Compose没有相关解析PDF的库,所以我们使用WebView进行加载。
使用pdf.js来解析PDF。
访问跨域
pdf.js 加载 PDF的时候就算,PDF的地址是允许跨域的,但是只要域不一样,依旧会报错,直接在viewer.js
,找到下面的代码,把抛出异常的地方注释掉就行。
1 | if (fileOrigin !== viewerOrigin) { |
添加依赖
这个主要用于使用模板生成HTML
1 | dependencies { |
添加模板
PDF解析库
assets 中添加相关库文件
模板
模板文件要放在src/main/assets/themes
文件夹下
注意文件必须以.chtml
作为后缀
assets/themes 中添加 zpdf.chtml
1 |
|
自定义组件
1 | import android.annotation.SuppressLint |
注意
下面的配置确保图片的正常加载
1 | settings.javaScriptEnabled = true // 如果图片加载依赖JS |
Compose封装
1 | import android.content.Context |
注意
销毁时释放Webview资源,避免内存泄漏导致的加载异常。
使用
1 | ZPdfViewComp( |