Formerly known as R2D2BC. The GitHub repository (
d-i-t-a/R2D2BC), the npm package (@d-i-t-a/reader), and theD2Readerclass name are unchanged.
DITA Toolkit is an implementation of the Readium v2 EPUB, PDF, and Audiobook reader for the web. It is built as a modular toolkit (rather than a full-featured app) so that applications can use it to handle publication-related functions while customizing their own design, user interface, and extensions.
- Follow the Readium architecture specification for best interoperability
- Allow maximum configurability via API methods, callbacks, code and style injection, and clear separation of functions
- Modularity
- Clarity of code and ease of maintenance
- Speed
- Accessibility
- Free and open source
The project intentionally includes only a bare-bones demonstration user interface, and no sample content. Any implementer can add their own functionality and design without refactoring the whole project.
- EPUB Reflowable + Fixed Layout
- PDF (via pdfjs-dist v5)
- Audiobook (Readium Audiobook Profile)
- RTL paginated + scroll (Arabic, Hebrew, RTL CJK)
- CJK vertical (Japanese tategaki, vertical Chinese) and Mongolian vertical
- ReadiumCSS v1 and v2 supported simultaneously
- Direct EPUB / Blob / File opening (client-side parsing with font deobfuscation)
- Reader Settings (font, size, spacing, colors, layout, margins)
- Configurable Modules with Callbacks
- Injectable Fonts, CSS, JavaScript
- Text Selection with Injectable Context Menu
- Bookmarks
- Highlights (configurable colors)
- Annotations
- TTS — Text to Speech / Read Aloud
- Media Overlays — Read Along (with click-to-advance)
- Full-text Search
- Content Protection
- Definitions
- Popup Footnotes
- Page Breaks — Page Numbers in margin
- Sample Read
- Timeline
- Consumption Tracking
- Layers
- Line Focus
- History Navigation
- Citations
This project implements most components of the Readium Architecture:
- Implements Locator
- Implements UserSettings
- Implements Webpub Manifest
- Builds on
@readium/sharedfor the model layer - Supports both ReadiumCSS v1.1.x and v2.0.x (v2 via
@readium/cssnpm) EpubNavigatorfor reflowable and fixed-layout publicationsPDFNavigator(pdfjs-dist v5)AudiobookNavigatorfor Readium Audiobook Profile publications
Here is the original proposal, initiated by Aferdita Muriqi to the Readium Weekly Eng Meeting - 05/22/2019
The project was originally named R2D2BC: R2 = Readium v2, D2 = DITA (AM Consulting LLC), B = Bokbasen, C = CAST. Development was supported by DITA, Bokbasen, and CAST.
DITA Toolkit (formerly R2D2BC) has been used in:
- The Clusive learning environment
- Allvir's Allvit.no Reading Platform
- The UNODC Fieldguides
- The DITA Gateway D2G with several open collections
- NYPL's Web Reader Implementations
- Bibliotheca's CloudLibrary as Sample Reader and Full ePub Reader
- Above the Treeline's Edelweiss+
- Bluefire's Web Reader Implementations
- and more…
npm install
npm run build && npm run examplesThen visit http://localhost:4444/. The landing page shows available publications and example viewers.
Examples are included for React, Vue, Angular, Next.js, Remix, and Vanilla JS:
npm run example:react
npm run example:vue
npm run example:angular
npm run example:vanillaSee examples/README.md for full details.
Contributions are welcome. Please see CONTRIBUTING for detailed guidelines.
Apache-2.0. See LICENSE.

