Android Compose展示PDF文件

github源码文件

添加依赖

kotlin 复制代码
 implementation "com.github.barteksc:android-pdf-viewer:3.2.0-beta.1"

在compose中展示pdf文件

kotlin 复制代码
   AndroidView(
                modifier = Modifier
                    .fillMaxWidth()
                    .height(600.dp),
                factory = { ctx ->
                    val parser: XmlPullParser = ctx.resources.getXml(R.xml.file_path)
                    val attributes = Xml.asAttributeSet(parser)
                    PDFView(ctx, attributes).apply {
                        isLoading = true
                    }

                },
                update = { pdfview ->
                    pdfview//.fromUri(Uri.parse(url))
                        .fromFile(File(pathAndroidPdf))
                        .defaultPage(0)
                        .onPageChange { page, pageCount ->

                        }
                        .enableAnnotationRendering(false)
                        .onLoad {
                            Log.d(TAG, "PreviewUriPage: $it")
//                        onLoadComplete(it)
                            isLoading = false
                        }
                        .spacing(10)
                        .pageFitPolicy(FitPolicy.BOTH)
                        .load()

                })

线上文件使用fromUri(Uri.parse(url))

本地文件使用.fromFile(File(pathAndroidPdf))

问题:

对于pdf文件过大的情况,渲染时间过长,在渲染过程中,没有找到对应的方法

在xml View中展示pdf文件

view:

kotlin 复制代码
  <com.github.barteksc.pdfviewer.PDFView
                android:id="@+id/fl_pdf"
                android:layout_width="match_parent"
                android:layout_height="600dp"
                android:visibility="visible"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                />

实现

kotlin 复制代码
binding.flPdf.fromUri(Uri.parse(it))
               // .fromFile(File(pathAndroidPdf))
                .defaultPage(0)
                .onPageChange { page, pageCount ->

                }
                .enableAnnotationRendering(false)
                .onLoad {
                showLoading(true)
                }
                .onRender {
                    showLoading(false)
                }
                .spacing(10)
                .pageFitPolicy(FitPolicy.BOTH)
                .load()
相关推荐
_李小白10 小时前
【OSG学习笔记】Day 38: TextureVisitor(纹理访问器)
android·笔记·学习
JJay.10 小时前
Kotlin 高阶函数学习指南
android·开发语言·kotlin
jinanwuhuaguo10 小时前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin
JJay.10 小时前
Android Kotlin 协程使用指南
android·开发语言·kotlin
私人珍藏库11 小时前
【Windows】PDF超能助手(1.0.13)
windows·pdf·工具·软件·多功能
BLUcoding11 小时前
Android 布局介绍
android
summerkissyou198711 小时前
android-蓝牙-状态和协议值总结及监听例子
android·蓝牙
徒 花11 小时前
数据库知识复习05
android·数据库
其实秋天的枫13 小时前
2026年新大纲普通话考试真题题库50套(PDF电子版)
经验分享·pdf
提子拌饭13313 小时前
番茄时间管理:鸿蒙Flutter 实现的高效时间管理工具
android·flutter·华为·架构·开源·harmonyos·鸿蒙