Are you also sick of using this stupid Digi4... web editor and finally want to have a clean and searchable PDF of the books you paid for?
╭────────────────────────────────────────╮
│ Digi2PDF │
│ owned Digi4School ebooks -> clean PDFs │
╰────────────────────────────────────────╯
platform macOS + Windows
engine Python, Selenium, Pillow
Terminal ui
✓ Chrome: /Applications/Google Chrome.app
✓ Tesseract: /opt/homebrew/bin/tesseract
● Live dashboard: selected books, capture phase, OCR progress, and scrollable logs
✓ Finished. Output folder: ~/Documents/Digi2PDF
| Feature | Description |
|---|---|
| Polished TUI | Fast terminal UI flow with strong contrast, status states, and arrow-key selections. |
| Multi-book picker | Select one or many books with Space and start the batch with Enter. |
| Live dashboard | Shows selected books, output path, capture phase, OCR decisions, per-book OCR progress, and scrollable colored logs. |
| Cross-platform | Designed for macOS and Windows with Chrome + Selenium. |
| Secure login storage | Can store Digi4.... credentials in the OS keychain or Windows Credential Manager. |
| Export location picker | Defaults to ~/Documents/Digi2PDF on macOS and still lets you override the folder. |
| Optional OCR | Can run a searchable OCR post-process with fast, balanced, and best profiles when OCRmyPDF and Tesseract are available. |
| PDF pipeline | Captures stable pages, crops the book canvas, waits for page changes, removes the duplicate final page, and writes a PDF. |
| Provider handling | Supports Digi4....-style readers plus Scook and BiBox preparation paths. |
| Clean architecture | Browser automation, TUI, image handling, and runtime options are split into maintainable modules. |
Digi2PDF is a fresh, independent rewrite around the useful idea of converting personally accessible Digi4School books into PDFs for offline study. The goal is not a copied one-file script, but a maintainable private tool with a professional terminal interface.
Use it only for books you are allowed to access and export under your account, school rules, and local law. Digi2PDF is intended for private offline study workflows, not for redistribution or bypassing access restrictions.
- Start the TUI.
- Confirm the private-use notice.
- Choose timing/output/OCR options.
- Digi2PDF checks the operating system, Python dependencies, Chrome, and OCR tooling when OCR is enabled.
- Log in to Digi4School in the Selenium-controlled Chrome session.
- Select one or many books with Space and Enter.
- Choose which selected books should receive OCR.
- Digi2PDF detects the viewer type, captures stable page images, waits for page changes, writes a PDF, optionally adds OCR, and removes intermediate page images unless
--keep-imagesis set.
| Area | Tooling |
|---|---|
| Language | Python 3.12+ |
| Browser automation | Selenium + Chrome |
| TUI | Rich + Questionary |
| Image/PDF | Pillow + NumPy |
| Packaging | uv + hatchling |
| Quality | Ruff + Pytest + GitHub Actions |
- Google Chrome
- Python 3.12+ when installing as a Python CLI
uvfor the recommended CLI installation and local development- No Python or
uvinstallation is needed when using the Windows release EXE - Optional OCR: Tesseract. The Windows release EXE bundles the OCRmyPDF Python runtime; normal Python installs receive it as a package dependency.
Recommended CLI install:
uv tool install git+https://github.com/jx-grxf/Digi2PDF.git
digi2pdfWindows users can either use the same CLI install or download the latest digi2pdf-*-windows-x64.exe release asset:
.\digi2pdf-v0.0.0-windows-x64.exeThe EXE bundles the required Python packages. Google Chrome still needs to be installed separately because Selenium controls the real browser.
If you prefer the Python CLI:
uv tool install git+https://github.com/jx-grxf/Digi2PDF.git
digi2pdfLocal development:
uv sync --dev
uv run digi2pdfuv run digi2pdf --output-dir ./exports
uv run digi2pdf --show-browser --delay 1.0
uv run digi2pdf --all --keep-images
uv run digi2pdf --ocr
uv run digi2pdf --ocr --ocr-quality fast
uv run digi2pdf --forget-loginAfter global installation, drop uv run:
digi2pdf --show-browser
digi2pdf --output-dir ./exportsCredentials are saved only after a successful login and only if you confirm the prompt. On macOS they go into Keychain; on Windows they go into Credential Manager through keyring.
OCR is optional because it still needs native Tesseract tooling. When OCR is enabled and a system dependency is missing, Digi2PDF offers install commands, rechecks the result, and asks for a restart if the new tools are not visible in the current terminal yet. The CLI estimates OCR ETA from the selected quality profile, page count, and local CPU job count. During page capture, Digi2PDF shows the active scan phase instead of a fake ETA because the final page count is only known after the reader stops advancing.
Digi2PDF is for private use with ebooks you are already allowed to access. Do not use it to share, sell, upload, or redistribute copyrighted material, and do not use it in ways that violate your school, account, platform, or local legal requirements.
uv sync --dev
uv run ruff check .
uv run pytestBuild a local one-file binary for your current platform:
uv run pyinstaller --clean --noconfirm --onefile --name digi2pdf --collect-all keyring --collect-all PIL --collect-all platformdirs --collect-all questionary --collect-all rich --collect-all selenium packaging/digi2pdf_entry.pyWindows .exe builds are produced by the Build Binaries GitHub Actions workflow when a GitHub release is published. The workflow runs tests, smoke-tests digi2pdf.exe --version, and uploads the versioned EXE plus a SHA256 checksum to the release assets.
- Add a true searchable book picker for very large libraries.
- Add resumable exports with per-book progress metadata.
- Add signed release builds for macOS and Windows.
- Add visual regression checks for crop-box detection.
- Add safe parallel browser workers after the Selenium session model is isolated per book.
MIT