引用
http://blog.csdn.net/u010046908/article/details/53927157
Android 打開網(wǎng)絡(luò)上pdf文件
它自己本身也是依賴于https://github.com/JoanZapata/android-pdfview
這個項目铅檩。
在原先的基礎(chǔ)之上加上了網(wǎng)絡(luò)請求仗颈。
本來是不打算寫這文章的刻盐,奈何使用https://github.com/lidong1665/AndroidPDF
加載網(wǎng)絡(luò)pdf文件出異常了尚困〈缆幔看了下項目的Issues
,好像其他人也有類似情況,于是想了想事甜,還是自己在https://github.com/JoanZapata/android-pdfview
基礎(chǔ)之上做層封裝忙芒。
基礎(chǔ)
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有很好的擴展功能,對于這種在原來基礎(chǔ)之上加功能的情況是非常適用的讳侨。
代碼實現(xiàn)
這里就講述下關(guān)鍵原理,就不把一些初始化代碼搬上來了奏属,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)
})
}
其實關(guān)鍵代碼就是這么一個方法。
在PDFView
中直接擴展一個方法囱皿,然后http請求后勇婴,保存到本地,然后再調(diào)用原來的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()
}
})
獲取下寫文件權(quán)限嘱腥,然后直接使用擴展方法耕渴。
Github地址
https://github.com/javalong/LookPdf