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()
相关推荐
Aevget1 小时前
界面控件DevExpress WPF v25.1新版亮点:PDF Viewer功能全新升级
pdf·wpf·界面控件·devexpress·ui开发
走在路上的菜鸟2 小时前
Android学Dart学习笔记第四节 基本类型
android·笔记·学习
Olafur_zbj2 小时前
【AI】使用OCR处理pdf
数据库·pdf·ocr
百锦再2 小时前
第21章 构建命令行工具
android·java·图像处理·python·计算机视觉·rust·django
skyhh4 小时前
Android Studio 最新版汉化
android·ide·android studio
路人甲ing..4 小时前
Android Studio 快速的制作一个可以在 手机上跑的app
android·java·linux·智能手机·android studio
携欢7 小时前
PortSwigger靶场之Web shell upload via path traversal靶场通关秘籍
android
Cyclo-10 小时前
PDFJS 在React中的引入 使用组件打开文件流PDF
前端·react.js·pdf
消失的旧时光-194315 小时前
Android ADB指令大全详解
android·adb