Formats

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.

FormatExtensionsEngineChaptersSelect & highlightNotesZoom & panRemarks
EPUB.epubText engineYesYesYesImages onlyParsed 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 .azwText engineYesYesYesImages onlyFrom-scratch parser. PalmDOC compression and inline recindex images, verified against real files. No DRM, no HUFF/CDIC compression.
Kindle KF8.azw3 .kf8Text engineYesYesYesImages onlyReal 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 .fb3Text engineYesYesYesImages onlyTop-level sections become chapters; base64 <binary> images are resolved.
Plain text.txtText engineAutoYesYesNoChunked into chapters at blank-line runs.
PDF.pdfNative PDF (pdfium)BookmarksYesYesYesClickable internal and external links, per-character text geometry for selection, outline drawer, optional colour inversion in dark theme.
Comic archives.cbz .cbr .cb7 .cbtBitmap pagerNoNoNoYesZIP, RAR 4/5 (pure Java), 7z and tar. Natural page ordering. Pages decode at viewport size, never full resolution.
DjVu.djvuBitmap pagerNoNoNoYesDecoded 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 →