Tech Sheets

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,
    )
}

一覧に戻る