引用
http://blog.csdn.net/u010046908/article/details/53927157
Android 打开网络上pdf文件
它自己本身也是依赖于https://github.com/JoanZapata/android-pdfview
这个项目。
在原先的基础之上加上了网络请求。
本来是不打算写这文章的,奈何使用https://github.com/lidong1665/AndroidPDF
加载网络pdf文件出异常了。看了下项目的Issues
,好像其他人也有类似情况,于是想了想,还是自己在https://github.com/JoanZapata/android-pdfview
基础之上做层封装。
基础
http请求框架
https://github.com/javalong/Retrofit-RxJava
kotlin扩展
https://github.com/wangjiegulu/kotlin-for-android-developers-zh/blob/master/kuo_zhan_han_shu.md
由于kotlin有很好的扩展功能,对于这种在原来基础之上加功能的情况是非常适用的。
代码实现
这里就讲述下关键原理,就不把一些初始化代码搬上来了,github中我会有个demo使用。
fun PDFView.Configurator.loadPdf() {
RetrofitHelper.getInstance().getApi(DownApi::class.java)
.download(PDFURL)
.observeOn(Schedulers.io())
.subscribe({ body ->
saveFileToLocal(body, Runnable { load() })
}, { error ->
Log.e("TAG", error.message)
})
}
其实关键代码就是这么一个方法。
在PDFView
中直接扩展一个方法,然后http请求后,保存到本地,然后再调用原来的PDFView.load
方法
使用
快速接入
`implementation 'com.javalong:pdflib:1.0.1'`
代码使用
var pdfView: PDFView = findViewById(R.id.pdfView)
RxPermissions(this)
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe({ success ->
if (success) {
pdfView.fromUrl("http://dian.so/docs/bussiness_coor_doc.pdf")!!.loadPdf()
}
})
获取下写文件权限,然后直接使用扩展方法。
Github地址
https://github.com/javalong/LookPdf