作者:朱 江
链接:
https://blog.csdn.net/haojiagou/article/details/142260137
本文由作者授权发布。
在 Android 开发中,加载 PDF 文件是一个比较常见的需求,但就是这么一个比较常见的功能,原生并没有提供一个比较好的方案,而隔壁 IOS 中实现却是很方便的。。。下面是当前在 Android 应用浏览 PDF 的几种方式:AndroidPdfViewer
https://github.com/DImuthuUpe/AndroidPdfViewer
在之前大部分选择的还是第二种和第三种方案来实现 PDF 文件的预览,但现在,大家又多了一种额外的选择!
其实这个依赖库出现的有点晚,不止 PDF 库,还有之前说过的 Bluetooth 库,不过那句老话怎么说来着:”好饭不怕晚“嘛!这个库也是在查看最近 Jetpack 中有啥更新的内容时发现的:其实在八月七日就更新出来了 alpha01 版本,当时只是知道,并没有尝试,但又看到在不算长的事件间隔,不到一个月的时间又出了 alpha02 版本,证明官方还是挺发力的,不像 Bluetooth ,已经快一年没更新了。。对了,大家如果想看 Jetpack 的更新的话可以去如下网站:海外
https://developer.android.com/jetpack/androidx/versions/all-channel
国内
https://developer.android.google.cn/jetpack/androidx/versions/all-channel
在 build.gradle 中添加对 pdf 的依赖:dependencies {
implementation("androidx.pdf:pdf-viewer-fragment:1.0.0-alpha02")
}
- PdfViewerFragment在处理非常大的 PDF 文档 (> 250 MB) 时存在一些性能问题。
这些已知问题应该会在后面的版本中进行修复,且对普通使用不会造成影响。一般的 PDF 也不会有 250 MB 以上,如果有的话也是特殊定制需求了。这个库其实又分为了两个:pdf-viewer-fragment 和 pdf-viewer ,其中 pdf-viewer-fragment 中只有一个 fragment ,剩下的逻辑处理全部在 pdf-viewer 中。private fun setPdfView() {
val fragmentManager: FragmentManager = supportFragmentManager
pdfViewerFragment = PdfViewerFragment()
val transaction: FragmentTransaction = fragmentManager.beginTransaction()
transaction.replace(
R.id.fragment_container_view,
pdfViewerFragment!!,
PDF_VIEWER_FRAGMENT_TAG
)
transaction.commitAllowingStateLoss()
fragmentManager.executePendingTransactions()
}
pdfViewerFragment?.documentUri = uri
pdfViewerFragment?.isTextSearchActive = true
其实这个库出来挺好的,不过当前就别在项目中使用了,毕竟还是 alpha 版本,还有,这甚至不像一个 2024 年开发出来给 Android 使用的一个库,还是官方的,之前看官方写的库都感觉非常厉害,不管是格式还是逻辑,但看这个库的源码感觉就是很乱,同一个文件中两个地方写代码的方式都不同。。。库里面大部分 Java 代码没有任何问题,但官方一直推的 Compose 竟然没用。。。哪怕多出一个 Composable 也可以啊,和 fragment 都存在,让大家根据需求使用!还有就是现在这个库的可定制化不太高,如果想要修改一些样式是比较困难的,目前能想到的方式就是重写 PdfViewerFragment ,但这样的意义不大,所以才不理解为什么没有 Composable ,这样可以根据不同需求来展示不同样式,可能下一个版本或者 Beta 版本就有了吧。简单的一个库的介绍,这个库的代码量挺大的,包括如果 PDF 文件有密码的话,还提供了密码输入框等等,还有 PDF 的一系列操作。之后如果有时间的话会看一看这个库的源码,现在就搂一眼吧,之后稳定一些再看!
最后推荐一下我做的网站,玩Android: wanandroid.com ,包含详尽的知识体系、好用的工具,还有本公众号文章合集,欢迎体验和收藏!
扫一扫 关注我的公众号
如果你想要跟大家分享你的文章,欢迎投稿~
┏(^0^)┛明天见!