文件与分享
文件与分享 · androidx.documentfile
PDF:在 Compose 中展示 PDFDocumentFile 1.1.0-rc01
PdfDocument 加载与 PdfViewer 的用法,以及 PDF 模块的边界。
最后更新 2026-08-01
复制即用
import androidx.pdf.PdfDocument
import androidx.pdf.compose.PdfViewer
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
@Composable
fun PdfScreen(parcelFileDescriptor: ParcelFileDescriptor) {
val pdfDocument = remember(parcelFileDescriptor) {
PdfDocument.load(parcelFileDescriptor)
}
DisposableEffect(Unit) {
onDispose { pdfDocument.close() }
}
PdfViewer(pdfDocument = pdfDocument)
}常见陷阱
- 忘 close:
PdfDocument持文件描述符,用完必须 close(DisposableEffectonDispose)。 - 忘加载失败处理:
PdfDocument.load可能抛 IOException(文件损坏/权限)。 - PdfViewer 状态:记住页面位置需要自行持久化,PdfViewer 不负责。
要点
PdfDocument.load()从ParcelFileDescriptor加载 PDF 文档。PdfViewer是 Compose 入口,负责渲染页面与交互。- 文档用完后必须
close(),避免文件描述符泄漏。 - PDF 模块是较新库(1.0.0-alpha19),API 以当前源码为准。
- 该库展示 PDF 内容,不负责生成 PDF 文档。