Jetpack ComposeでPDFを表示する
最終更新日:2025-08-13
    
    ※本記事はアルファ版ライブラリでの調査結果です
androidx.pdf:pdf-composeとandroidx.pdf:pdf-document-serviceを使ってJetpack ComposeでPDFが表示できます。
ライブラリの追加
バージョン 1.0.0-alpha10
 以降を指定します。
// app/build.gradle.kts
dependencies {
  ...
  implementation("androidx.pdf:pdf-compose:1.0.0-alpha10")
  implementation("androidx.pdf:pdf-document-service:1.0.0-alpha10")  
}
表示対象PDFのUriを取得する
今回は rememberLauncherForActivityResult
 で取得するようにしてみます。
val launcher = rememberLauncherForActivityResult(
  ActivityResultContracts.OpenDocument()
) { uri ->
  if (uri == null) return@rememberLauncherForActivityResult
  // 続きは後ほど
}
PDFをロードする
Uriが取得できたら次はロードします。 suspend fun
 なのでコルーチンスコープの中で実行します。
val context = LocalContext.current
val scope = rememberCoroutineScope()
var pdf by remember { mutableStateOf<PdfDocument?>(null) }
val launcher = rememberLauncherForActivityResult(
  ActivityResultContracts.OpenDocument()
) { uri ->
  if (uri == null) return@rememberLauncherForActivityResult
  val loader = SandboxedPdfLoader(context = context)
  // Load the PDF document from the URI
  scope.launch {
    pdf = loader.openDocument(uri = uri, password = null)
  }
}
ロードしたPDFを表示する
表示には PdfViewer()
 コンポーザブルを使います。
if (pdf != null) {
    PdfViewer(
        pdfDocument = pdf,
        state = state,
    )
}
    
