Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mahmoud-b28887f9.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

KPDF is a Kotlin Multiplatform PDF library that gives your Android and iOS Compose Multiplatform apps a full-featured PDF viewer. Add it with two Gradle dependencies and you get URL loading, intelligent page caching, pinch-to-zoom, swipe navigation, save/export flows, device file picking, and connected toolbar and thumbnail views — all driven by a single KPdfViewerState.

Quick Start

Display your first PDF in under five minutes with a minimal working example.

Installation

Add the Gradle dependencies and configure your project for Android and iOS.

PDF Sources

Load PDFs from remote URLs, raw bytes, or Base64-encoded strings.

API Reference

Browse the full public API: viewer state, config, sources, and state types.

How KPDF works

KPDF is split into two modules that work together:
  • kpdf-core — The shared PDF engine: source loading, page rendering, RAM and disk caching, navigation, zoom, save/export, and device file picker state.
  • kpdf-compose — Compose Multiplatform UI components and platform integrations for save and open flows.
1

Add the dependencies

Add kpdf-core and kpdf-compose to your Gradle build file.
2

Create a PDF source

Choose KPdfSource.Url, KPdfSource.Bytes, or KPdfSource.Base64 based on where your PDF comes from.
3

Create viewer state

Call rememberPdfViewerState(source, config) inside your composable to get a KPdfViewerState.
4

Render the viewer

Pass the state to KPdfViewer(state = viewerState) and optionally add KPdfViewerToolbar and KPdfThumbnailStrip.

Key features

Multi-source loading

Load PDFs from HTTPS URLs with custom headers, raw byte arrays, or Base64 strings — including data URL format.

Smart caching

Configurable RAM and disk page caches keep scrolling smooth and allow offline reopening of remote documents.

Save & export

Built-in save flow launches the platform file picker. Export raw bytes for custom share flows.

Connected views

Toolbar and thumbnail strip components share the same viewer state — no manual wiring required.