Skip to content

VeselyJan92/PDFViewer

Repository files navigation

Compose PDFViewer library for Android

  • Backwards compatible thanks to PdfiumAndroidKt
  • Supports PDF annotations
  • Supported gestures: pinch to zoom, tap to zoom, scroll
  • Scrolling and dragging supports velocity drag

Native vs PdfiumAndroidKt version

PdfiumAndroidKt renderer

This renderer uses PdfiumAndroidKt and is backwards compatible but app needs to bundle PDFium native libraries.

implementation("io.github.veselyjan92:pdfviewer-pdfium:1.0.5")
val state = rememberPDFViewerPdfiumState(file)

PDFViewer(
    state = state,
)

Android renderer

This renderer uses PdfRenderer. There are some limitations such as lack of support for annotated PDFs on Android api levels less than 31. Read more here

implementation("io.github.veselyjan92:pdfviewer:1.0.5")
val state = rememberPDFViewerAndroidState(file)

PDFViewer(
    state = state,
)

Try with preview

Put a sample PDF apollo.pdf in the assets folder.

@Composable
@Preview
private fun PdfViewerAndroidRendererPreview() {
    val context = LocalContext.current

    val file =  File.createTempFile("tmp", "pdf", context.cacheDir).apply {
        mkdirs()
        deleteOnExit()
        writeBytes(context.assets.open("apollo.pdf").readBytes())
    }
    
    val state = rememberPDFViewerAndroidState(file)

    PDFViewer(
        state = state,
        modifier = Modifier.fillMaxSize()
    )
}

Check out how this library works

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages