Free, offline desktop PDF editor for Windows
Merge, split, annotate, convert, OCR — no subscription, no cloud upload.
Download · Landing page · Trust & verification · Changelog · Contributing
PDF Craft is an open-source PDF workstation built with Python and CustomTkinter. Edit pages in a visual editor, run batch tools from a side panel, convert formats, OCR scanned documents, and automate tasks from the CLI — all on your machine.
Your files never leave your computer. No account, no analytics, no internet required for core PDF work.
| Area | Capabilities |
|---|---|
| Editor | Thumbnails, fit-to-page, focus mode, annotations (highlight, rectangle, text), rotate/delete page, compress |
| PDF Tools | Split, merge, extract/delete pages, rotate all, encrypt/decrypt |
| Convert | PDF ↔ images, PDF ↔ Word (DOCX); Word → PDF on Windows |
| OCR | Searchable PDF from scans (Tesseract) |
| Plugins | Extend with Python scripts in ~/.pdf-craft/plugins/ |
| CLI | Scriptable commands for automation and CI |
| UX (v1.2) | Status bar, toasts, keyboard shortcuts, recent files, light/dark themes |
- Download
PDFCraft.exefrom the latest release. - Verify the SHA256 checksum in
SHA256.txt. - Run the executable. No installer required.
git clone https://github.com/Satan2049/pdf-craft.git
cd pdf-craft
py -3.12 -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install -r requirements.txt
python main.py| Feature | Requirement |
|---|---|
| OCR | Tesseract + pip install pytesseract |
| PDF → images | Poppler on PATH |
| Word → PDF | Windows + Microsoft Word |
Details: docs/PLATFORMS.md
pip install -r requirements.txt
pip install ruff pytest
python main.py
python main.py cli --help
python -m unittest discover -s tests -v
ruff check .Project layout:
pdf-craft/
├── main.py # GUI entry
├── cli.py # CLI entry
├── core/ # PDF logic (no UI imports)
├── gui/ # CustomTkinter UI
├── tests/
├── assets/ # Logo, icon, screenshots
├── scripts/ # make_icon, generate-sha256
└── docs/
See CONTRIBUTING.md and SECURITY.md.
.\.venv\Scripts\activate
.\build.batOutput: dist\PDFCraft.exe
Generate release checksums:
.\scripts\generate-sha256.ps1 -Version 1.2.0Full guide: docs/BUILD.md · Release workflow: docs/RELEASE.md
| Layer | Technology |
|---|---|
| Language | Python 3.10+ |
| UI | CustomTkinter |
| PDF engine | PyMuPDF (fitz) |
| PDF utilities | pypdf |
| Images | Pillow |
| OCR | pytesseract + Tesseract |
| Conversions | pdf2image, pdf2docx, docx2pdf |
| Packaging | PyInstaller |
| Lint / test | Ruff, unittest |
- Checksums: SHA256.txt · docs/TRUST.md
- v1.2.0
PDFCraft.exeSHA256:E6F490453EE1B92093F4F15C0C4CA682F8CFB63C96B39EA85469F4DE3B019E9F - VirusTotal: report (unsigned PyInstaller builds may trigger heuristic false positives — verify hash first)
MIT — see LICENSE. Third-party notices: NOTICE.
PyMuPDF is AGPL-3.0. Review licensing if you distribute commercial or closed-source builds.




