Fifteen formats, five engines
Each file type is routed to the engine that suits it: a text-layout engine for reflowable books, a native PDF renderer, and a bitmap pager for scanned or drawn pages. The table shows exactly what each one gets.
| Format | Extensions | Engine | Chapters | Select & highlight | Notes | Zoom & pan | Remarks |
|---|---|---|---|---|---|---|---|
| EPUB | .epub | Text engine | Yes | Yes | Yes | Images only | Parsed with Readium's streamer, laid out by the app. Image-per-page EPUBs (comics) are detected and sent to the bitmap pager instead. |
| Kindle MOBI | .mobi .prc .azw | Text engine | Yes | Yes | Yes | Images only | From-scratch parser. PalmDOC compression and inline recindex images, verified against real files. No DRM, no HUFF/CDIC compression. |
| Kindle KF8 | .azw3 .kf8 | Text engine | Yes | Yes | Yes | Images only | Real KF8 section extraction including kindle:embed images, so AZW3 comics render. Files whose layout the extractor does not recognise fail with a clear message rather than garbled text. |
| FictionBook | .fb2 .fb3 | Text engine | Yes | Yes | Yes | Images only | Top-level sections become chapters; base64 <binary> images are resolved. |
| Plain text | .txt | Text engine | Auto | Yes | Yes | No | Chunked into chapters at blank-line runs. |
.pdf | Native PDF (pdfium) | Bookmarks | Yes | Yes | Yes | Clickable internal and external links, per-character text geometry for selection, outline drawer, optional colour inversion in dark theme. | |
| Comic archives | .cbz .cbr .cb7 .cbt | Bitmap pager | No | No | No | Yes | ZIP, RAR 4/5 (pure Java), 7z and tar. Natural page ordering. Pages decode at viewport size, never full resolution. |
| DjVu | .djvu | Bitmap pager | No | No | No | Yes | Decoded by djvu.js in a hidden WebView, since no Android DjVu library exists without a native build. Page sizes come from the document directory in one call. |
"Images only" means pinch-to-zoom applies to embedded images and image-heavy pages, not to the reflowed text itself, which you size with the font-size setting instead.
Listed but not opened
Calibre libraries often hold formats PandaReader does not read: RTF, DOC and DOCX, ODT, CHM, LIT, LRF, PDB and a few others. The scanner recognises them so a book's detail page shows the full set of formats the library holds, but tapping one of those does not open a reader.
Deliberately unsupported
- DRM of any kind. KFX is not even scanned, because real-world KFX files are almost always protected and the app will never strip protection.
- HUFF/CDIC-compressed MOBI. Fails with a specific message instead of garbled output.
- Markdown and HTML. Removed after testing; TXT is the only plain-text format.
- SMB 1. Only SMB 2 and 3 are negotiated.
How a file picks its engine
The file extension maps to a reader kind, and the kind picks the Activity. Reflowable formats go to the text engine; PDF to the native viewer; comics and DjVu to the bitmap pager. One exception is checked up front: a reflowable file that is really one full-page image per chapter, a scanned comic saved as EPUB or AZW3, is detected and sent to the bitmap pager so it reads like a comic rather than a very tall text document.
Whatever the engine, the book is first fetched into a local cache file, so every reader opens from a plain file whether the book lives on SFTP, WebDAV, NFS, a synced folder or the phone itself. More on the architecture →