Skip to content

Repository files navigation

PDF Craft logo

PDF Craft

Free, offline desktop PDF editor for Windows
Merge, split, annotate, convert, OCR — no subscription, no cloud upload.

Release Python 3.10+ MIT License CI SHA256

Download · Landing page · Trust & verification · Changelog · Contributing


Description

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.

Features

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

Screenshots

PDF Craft light mode PDF Craft dark mode

PDF Craft settings

Demo

PDF Craft demo

Installation

Windows (recommended)

  1. Download PDFCraft.exe from the latest release.
  2. Verify the SHA256 checksum in SHA256.txt.
  3. Run the executable. No installer required.

From source

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

Optional system tools

Feature Requirement
OCR Tesseract + pip install pytesseract
PDF → images Poppler on PATH
Word → PDF Windows + Microsoft Word

Details: docs/PLATFORMS.md

Development

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.

Build

.\.venv\Scripts\activate
.\build.bat

Output: dist\PDFCraft.exe

Generate release checksums:

.\scripts\generate-sha256.ps1 -Version 1.2.0

Full guide: docs/BUILD.md · Release workflow: docs/RELEASE.md

Tech stack

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

Trust & releases

  • Checksums: SHA256.txt · docs/TRUST.md
  • v1.2.0 PDFCraft.exe SHA256: E6F490453EE1B92093F4F15C0C4CA682F8CFB63C96B39EA85469F4DE3B019E9F
  • VirusTotal: report (unsigned PyInstaller builds may trigger heuristic false positives — verify hash first)

License

MIT — see LICENSE. Third-party notices: NOTICE.

PyMuPDF is AGPL-3.0. Review licensing if you distribute commercial or closed-source builds.

Releases

Packages

Contributors

Languages