A lightweight desktop application for working with PDF files — built with Python, Tkinter and pypdf.
---
| Tool | Description |
|---|---|
| ➕ Merge PDFs | Combine multiple PDFs into one — drag & drop supported |
| ✂ Split PDF | Extract individual pages or a page range |
| 📄 Extract Text | Export text to TXT, DOCX or clipboard |
| 🖼 Extract Images | Save embedded images as PNG, JPG, TIFF or WebP |
| 🗜 Compress | Reduce file size by downsampling embedded images |
| 🔄 Rotate | Rotate pages 90°, 180° or 270° — all or specific pages |
| 💧 Watermark | Stamp text or image watermarks on any page |
| 🔒 Password | Add or remove PDF encryption |
| 🔀 Reorder | Drag pages into any order before saving |
| 🏷 Metadata | View and edit Title, Author, Subject, Keywords |
| 🗑 Remove Blanks | Detect and delete near-empty pages |
| 🔧 Repair PDF | Rebuild corrupted PDFs page by page |
| 🖼→📄 Images to PDF | Convert image files into a PDF document |
| ✂📐 Crop Margins | Trim page margins in mm (top / bottom / left / right) |
| 🔍 OCR | Extract text from scanned pages via Tesseract |
| ⚖ Compare PDFs | Side-by-side text diff with color-coded changes |
| ⬛ Redact PDF | Black out sensitive regions defined in mm |
| 🔢 Page Numbers | Add styled page numbers — position, format, color |
| ✍ Signature | Place a signature image on selected pages |
| 📄⊞ N-Up | Impose multiple pages per sheet (2-up, 4-up, 6-up, 9-up) |
| 🔖 Bookmarks | View, add, delete bookmarks — split PDF by chapter |
Dark-themed card navigation — click any tool to open it instantly.
┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐
│ ➕ │ ✂ │ 📄 │ 🖼 │ 🗜 │ 🔄 │ 💧 │
│ Merge │ Split │ Extract │ Extract │ Compress │ Rotate │Watermark │
├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
│ 🔒 │ 🔀 │ 🏷 │ 🗑 │ 🔧 │ 🖼→📄 │ ✂📐 │
│ Password │ Reorder │ Metadata │ Remove │ Repair │ Images │ Crop │
├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
│ 🔍 │ ⚖ │ ⬛ │ 🔢 │ ✍ │ 📄⊞ │ 🔖 │
│ OCR │ Compare │ Redact │ Page No │Signature │ N-Up │Bookmarks │
└──────────┴──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘
1. Clone the repository
git clone https://github.com/tvankov/pdf-tool.git
cd pdf-tool2. Install dependencies
pip install -r requirements.txt3. Run the app
python main.pypip install tkinterdnd2Install Tesseract OCR. The app detects it automatically on Windows (C:\Program Files\Tesseract-OCR\).
Don't want to run from source? Download the ready-to-use Windows executable:
No Python installation required.
pypdf
reportlab
Pillow
python-docx
pdf2image
pytesseract
tkinterdnd2 # optional
pdf_tool/
├── main.py ← Entry point — card-based navigation
├── config.py ← Color theme constants
├── requirements.txt
├── .gitignore
└── tabs/
├── __init__.py
├── merge.py split.py extract_text.py
├── extract_images.py compress.py rotate.py
├── watermark.py password.py reorder.py
├── metadata.py blank.py repair.py
├── convert.py crop.py ocr.py
├── compare.py redact.py pagenumbers.py
├── signature.py nup.py bookmarks.py
- Create
tabs/your_feature.pywith a classYourFeatureTab— setLABEL = "🔣 Tool Name"(emoji + two spaces + name) - Register it in
tabs/__init__.py - Add
YourFeatureTabtoTAB_CLASSESinmain.py
Todor Vankov — 3D Artist & Developer transitioning into Data Analytics
🌐 todorvankov.com · 💼 LinkedIn
MIT — free to use and modify.