E-book to XTC format converter based on Cool Reader and crengine.
cr2xt is an umbrella project that combines two forked repositories into a unified build:
- crengine-ng - Cross-platform C++ library for e-book rendering (backend/engine)
- crqt-ng - Qt frontend application
The primary purpose of this project is to convert e-books (EPUB, FB2, MOBI, etc.) into bitmap images optimized for ESP32 e-paper display devices such as Xteink X4.
Xteink X4 is based on ESP32-C3 and only has 400KB RAM, making it challenging to render books with good formatting. The converter renders book pages and exports them to custom container formats (XTC/XTCH) containing monochrome or 4-level grayscale images (XTG/XTH).
XTC Export dialog supports single file and batch export modes.
The converter supports all e-book formats handled by crengine:
- EPUB, FB2, FB3, MOBI, PRC, AZW
- DOC, RTF, TXT, HTML
- CHM, TCR, PDB
- And more
See XtcFormat.md for the format specification provided by Xteink.
Also check *.ksy files in the same folder for Kaitai Struct format specification. These can be used to automatically generate parsers for different languages.
- File | Open and select your e-book file
- File | Settings (F9) to access formatting and font settings (or Settings from the context menu)
- View | Rotate (Ctrl+R) to change orientation (portrait or landscape)
- File | Export (Ctrl+S) to open the export dialog (or use Export from the context menu)
Export preview supports mouse wheel scrolling and zooming (with Ctrl+Mouse Wheel). Double-click to reset zoom.
Download the latest release version from the Releases page.
- Unpack and run
crqt.exe
Download a DMG from the Releases page. macOS 15 (Sequoia) or later is required. Three variants are available:
macos-universal- works on both Intel and Apple Silicon Macs (larger download)macos-arm64- Apple Silicon only (smaller)macos-x86_64- Intel only (smaller)
Important: The app is ad-hoc signed (not notarized by Apple). macOS Gatekeeper will block it on first run. To open:
-
Option A - Right-click method:
- Right-click (or Control-click) on
cr2xt.app - Select Open from the context menu
- Click Open in the dialog that appears
- Right-click (or Control-click) on
-
Option B - System Settings:
- Try to open the app normally (it will be blocked)
- Go to System Settings → Privacy & Security
- Scroll down and click Open Anyway next to the cr2xt message
-
Option C - Terminal (removes quarantine flag):
xattr -cr /Applications/cr2xt.app
After allowing once, the app will open normally.
Use the AppImage package from the Releases page. It includes all dependencies and should work on most modern Linux distributions.
- Stock English firmware renders 2-bit grayscale images too slowly, it's recommended to use 1-bit monochrome mode. It has been improved in CN firmware, and it works faster in CrossPoint custom firmware
- For 1-bit mode, try to find a font that looks best without antialiasing (Verdana, Tahoma, Roboto, old fonts with good hinting)
- For 2-bit mode, make sure to enable antialiasing in Settings | Styles and use Font gamma to control contrast
- Play with the font size / weight and avoid synthetic weights (Roboto family supports all weights natively)
- Some fonts work better with Autohinting (Roboto), others work better with Bytecode (Verdana)
- Adjust page margins and interline spacing to fit as many lines as possible but so that it's still comfortable to read
- Disable page number / page counter and other text in the header to save vertical space
- Further adjust header navigation bar margins for minimal look
- Use Settings | Stylesheet to adjust element margins and justification
- For advanced users, enable "Use expanded CSS file" and edit the
<format>-expanded.cssfile, changes will be applied on the fly
- Batch export - Convert multiple files at once (with file mask filtering and recursive folder processing)
- Profile-based settings - Pre-configured profiles for XTC (1-bit) and XTCH (2-bit) formats
- Live preview - See exactly how each page will look after export
- Dithering options - Floyd-Steinberg, ordered dithering, or none
- Page range selection - Export specific page ranges
- Chapter support - Include table of contents in export
- Metadata editing - Customize title and author
This project is a converter-focused fork with several key differences:
- New formatting and preview options for fine-tuning font rendering
- More options for footer / header customization (custom margins)
- Individual left/right/top/bottom page margins
- Space width / letter spacing
- CSS stylesheets export for manual editing and full customization
- XT* Export dialog with preview and batch mode
- Preserve last settings tab
- Use current page contents for Style Preview
- Default window size adjusts to the export resolution from the profile
- Advanced dithering options for images
- Page header / footer rendering customization
- XTC converter
- cr2xt CLI converter
- Docker image with CLI converter
- macOS builds
- Linux builds
- Unofficial compression for XTC format to be used in custom firmwares
- New custom XTB format with compression
See BUILD.md for build instructions for all platforms (Windows MSYS2/MinGW64, Linux + AppImage, macOS incl. universal binaries) and for how release artifacts are built on GitHub Actions.
This project inherits the licenses from its upstream components:
- crengine-ng: GPL-2.0
- crqt-ng: GPL-2.0
- Cool Reader - Original Cool Reader / crengine project by @buggins (Vadim Lopatin)
- crqt-ng - Next-generation Qt Cool Reader frontend fork by Aleksey Chernov
- crengine-ng - Next-generation crengine fork by Aleksey Chernov
