Readium Mobile is a toolkit for ebooks, audiobooks and comics written in Swift & Kotlin.
☝️ Take a look at the guide to quickly get started. A Test App demonstrates how to integrate the Readium Kotlin toolkit in your own reading app.
❓ Find documentation and API reference at readium.org/kotlin-toolkit.
✅ Implemented 🚧 Partially implemented 📆 Planned 👀 Want to do ❓ Not planned
| Format | Status |
|---|---|
| EPUB 2 | ✅ |
| EPUB 3 | ✅ |
| Readium Web Publication | 🚧 |
| ✅ | |
| Readium Audiobook | ✅ |
| Zipped Audiobook | ✅ |
| Standalone audio files (MP3, AAC, etc.) | ✅ |
| Readium Divina | 🚧 |
| CBZ (Comic Book ZIP) | 🚧 |
| CBR (Comic Book RAR) | ❓ |
| DAISY | 👀 |
A number of features are implemented only for some publication formats.
| Feature | EPUB (reflow) | EPUB (FXL) | |
|---|---|---|---|
| Pagination | ✅ | ✅ | ✅ |
| Scrolling | ✅ | 👀 | ✅ |
| Right-to-left (RTL) | ✅ | ✅ | ✅ |
| Search in textual content | ✅ | ✅ | 👀 |
| Highlighting (Decoration API) | ✅ | ✅ | 👀 |
| Text-to-speech (TTS) | ✅ | ✅ | 👀 |
| Media overlays | 📆 | 📆 |
| Feature | Status |
|---|---|
| OPDS Catalog 1.2 | ✅ |
| OPDS Catalog 2.0 | ✅ |
| Authentication for OPDS | 📆 |
| Readium LCP Automatic Key Retrieval | 📆 |
| Feature | Status |
|---|---|
| Readium LCP | ✅ |
| Adobe ACS | ❓ |
Guides are available to help you make the most of the toolkit.
- Opening a publication – parse a publication package (EPUB, PDF, etc.) or manifest (RWPM) into Readium
Publicationmodels - Extracting the content of a publication – API to extract the text content of a publication for searching or indexing it
- Supporting PDF documents – setup the PDF support in the toolkit
- Text-to-speech – read aloud the content of a textual publication using speech synthesis
- Accessibility – inspect and present accessibility metadata to users
- Navigator - an overview of the Navigator to render a
Publication's content to the user - Configuring the Navigator – setup and render Navigator user preferences (font size, colors, etc.)
- Font families in the EPUB navigator – support custom font families with reflowable EPUB publications
- Media Navigator – use the Media Navigator to read aloud a publication (audiobook, TTS, etc.)
- Supporting Readium LCP – open and render LCP DRM protected publications
| Readium | Android min SDK | Android compile SDK | Kotlin compiler (✻) | Gradle (✻) |
|---|---|---|---|---|
develop |
21 | 36 | 2.1.21 | 8.14.1 |
| 3.1.0 | 21 | 35 | 2.1.20 | 8.13 |
| 3.0.0 | 21 | 34 | 1.9.24 | 8.6.0 |
| 2.3.0 | 21 | 33 | 1.7.10 | 6.9.3 |
✻ Only required if you integrate Readium as a submodule instead of using Maven Central.
Readium modules are distributed with Maven Central. Make sure that you have the $readium_version property set in your root build.gradle, then add the Maven Central repository.
buildscript {
ext.readium_version = '3.1.1'
}
allprojects {
repositories {
mavenCentral()
}
}Then, add the dependencies to the Readium modules you need in your app's build.gradle.
dependencies {
implementation "org.readium.kotlin-toolkit:readium-shared:$readium_version"
implementation "org.readium.kotlin-toolkit:readium-streamer:$readium_version"
implementation "org.readium.kotlin-toolkit:readium-navigator:$readium_version"
implementation "org.readium.kotlin-toolkit:readium-opds:$readium_version"
implementation "org.readium.kotlin-toolkit:readium-lcp:$readium_version"
}You may prefer to use a local Git clone if you want to contribute to Readium, or if you are using your own fork.
First, add the repository as a Git submodule of your app repository, then checkout the desired branch or tag:
git submodule add https://github.com/readium/kotlin-toolkit.gitThen, include the Readium build to your project's settings.gradle file. The Readium dependencies will automatically build against the local sources.
// Provide the path to the Git submodule.
includeBuild 'kotlin-toolkit'Using the toolkit with Readium LCP requires additional dependencies, including the binary liblcp provided by EDRLab. Contact EDRLab to request your private liblcp and the setup instructions.