Skip to main content

A powerful file processing tool supporting PDF compression and PDF/PPTX conversion with GUI and CLI interfaces

Project description

🗜️ PDF Zipper

PyPI version Python License Platform Status

A powerful file processing tool supporting PDF compression, format conversion (PDF ↔ PPTX), with both GUI and CLI interfaces, built with modern Python.

📸 Screenshots

🖥️ Beautiful Terminal GUI

GUI Interface Interactive file browser with drag & drop support

⌨️ Powerful Command Line Interface

CLI Interface Rich output with progress indicators and detailed info

✨ Features

  • 🎯 Auto Compression: Automatically compress PDFs to a target file size
  • 🔧 Manual Compression: Compress PDFs with custom DPI settings
  • 📊 Bi-directional Conversion: Convert between PDF and PowerPoint formats (PDF ↔ PPTX)
  • 📁 Multi-format Support: Process both PDF (.pdf) and PowerPoint (.pptx) files
  • 🖥️ Beautiful GUI: Modern terminal-based interface using Textual
  • ⌨️ CLI Interface: Full command-line support with rich output
  • 📁 Drag & Drop Support: Easy file selection in GUI mode
  • 🔄 Format Detection: Automatic file type detection and validation
  • 📦 Easy Installation: Install as a system command

🚀 Installation

From PyPI (Recommended)

pip install pdf-zipper

From Source

git clone https://github.com/your-username/pdf-zipper.git
cd pdf-zipper
pip install -e .

Standalone Executable (No Python Required)

Download the pre-built executable for your platform:

macOS (Apple Silicon)

# Option 1: App Bundle (Recommended for GUI users)
# Download PDF-Zipper-darwin-arm64.app from releases page
# Double-click to launch GUI interface

# Option 2: Command Line Executable
# Download from releases page
chmod +x pdf-zipper-gui-darwin-arm64
./pdf-zipper-gui-darwin-arm64 --help
./pdf-zipper-gui-darwin-arm64 gui  # Launch GUI

Windows

REM Download from releases page
pdf-zipper-cli-windows-x64.exe --help

Linux

# Download from releases page
chmod +x pdf-zipper-cli-linux-x64
./pdf-zipper-cli-linux-x64 --help

From Source

git clone https://github.com/your-username/pdf-zipper.git
cd pdf-zipper
pip install -e .

Using Installation Script

git clone https://github.com/your-username/pdf-zipper.git
cd pdf-zipper
./install.sh
# Will be available after publishing to PyPI
pip install pdf-zipper

📖 Usage

CLI Commands

After installation, you can use pdf-zipper or pdfzip commands:

# Launch GUI
pdf-zipper gui

# Compress PDF to specific size (auto mode)
pdf-zipper compress input.pdf --target-size 5.0

# Compress PDF with specific DPI (manual mode)
pdf-zipper compress input.pdf --dpi 150

# Convert PPTX to PDF (new feature!)
pdf-zipper compress presentation.pptx

# Convert PDF to PowerPoint
pdf-zipper convert input.pdf

# Convert PowerPoint to PDF (new feature!)
pdf-zipper convert presentation.pptx

# Show file information (supports PDF and PPTX)
pdf-zipper info input.pdf
pdf-zipper info presentation.pptx

# Show help
pdf-zipper --help

The CLI provides rich, colorful output with progress indicators and detailed information (see CLI screenshot above).

GUI Mode

pdf-zipper gui

The GUI provides an intuitive interface with file browser, drag & drop support, and real-time progress logging (see screenshot above).

Programmatic Usage

from pdf_zipper import autocompress_pdf, compress_pdf, convert_to_ppt

# Auto compress to 5MB
autocompress_pdf("input.pdf", "output.pdf", 5.0, print)

# Manual compress with 150 DPI
compress_pdf("input.pdf", "output.pdf", 150, print)

# Convert to PowerPoint
convert_to_ppt("input.pdf", "output.pptx", 150, print)

🛠️ Development

Setup Development Environment

git clone https://github.com/your-username/pdf-zipper.git
cd pdf-zipper
pip install -e ".[dev]"

Run Tests

pytest

Code Formatting

black src/
isort src/

📋 Requirements

  • Python 3.8+
  • PyMuPDF (fitz)
  • Pillow
  • python-pptx
  • rich
  • textual
  • typer

🔧 How It Works

  1. Auto Compression: Uses binary search to find the optimal DPI that achieves the target file size
  2. Manual Compression: Converts PDF pages to images at specified DPI and recreates the PDF
  3. PDF to PPT: Extracts each page as an image and creates PowerPoint slides

💡 Tips

  • Higher DPI = better quality but larger file size
  • Auto compression may take longer but provides precise size control
  • For best results, start with the auto compression feature
  • Use the GUI for interactive file selection and real-time progress
  • Use CLI for batch processing and automation

📄 License

MIT License - see LICENSE file for details.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdf_zipper-1.1.0.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdf_zipper-1.1.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file pdf_zipper-1.1.0.tar.gz.

File metadata

  • Download URL: pdf_zipper-1.1.0.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pdf_zipper-1.1.0.tar.gz
Algorithm Hash digest
SHA256 8afaf1f7bd8faa9cbd483ace6a4d6f4194cc2548a225fe9c6e84a4c3ed89b72e
MD5 1dd3c87e8db8bbdaa08d8bc66ce275a9
BLAKE2b-256 79c2b12f1f65e88c6ef0e51b096884ce84b44ea9c819e916ad9710219a388b4c

See more details on using hashes here.

File details

Details for the file pdf_zipper-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: pdf_zipper-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pdf_zipper-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a4786e48b68c5451f150dcd099f6507766eab45bc8d524cb580d2ed7a12d11d6
MD5 26ce7dde7e957548dcb6281966fead20
BLAKE2b-256 84097c61e68f741b02e8dfa9fefabc744ead7b69100d34c6c1092fd81a5353ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page