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()
相关推荐
打小就很皮...4 小时前
html2canvas + jsPDF 生成 PDF 的踩坑与解决方案总结
前端·pdf
李艺为5 小时前
Fake Device Test作假屏幕分辨率分析
android·java
zh_xuan5 小时前
github远程library仓库升级
android·github
峥嵘life5 小时前
Android蓝牙停用绝对音量原理
android
优化控制仿真模型5 小时前
27考研数学一、二、三历年真题及答案解析PDF电子版(1987-2026年)
经验分享·pdf
huluang5 小时前
解决 Adobe Acrobat 裁剪 PDF 后内容仍存留的问题
pdf
其实秋天的枫5 小时前
27考研数学一、二、三历年真题及答案解析PDF电子版(1987-2026年)
经验分享·pdf
其实秋天的枫6 小时前
【2026专四】英语专业四级TEM4历年真题及答案电子版PDF(2009-2025年)
经验分享·pdf
czlczl200209256 小时前
IN和BETWEEN在索引效能的区别
android·adb
SunnyDays10116 小时前
如何使用 Python 将 PDF 转换为 TIFF 或将 TIFF 转换为 PDF
人工智能·python·pdf