Android实现pdf查看,支持加载网络pdf文件

引用

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

你可能感兴趣的:(Android实现pdf查看,支持加载网络pdf文件)