Skip to main content

Convert PDF Slides to PowerPoint Presentations with Vector Graphics

Project description

English | 简体中文 | 繁體中文 | 日本語

pdf2ppt

PyPI version Python License: MIT GitHub stars

Convert PDF Slides to PowerPoint Presentations with Vector Graphics (highest resolution).

✨ Features

  • 🎯 Vector Graphics - Maintains highest resolution in generated PPT
  • 📝 Metadata Conversion - Preserves title, author and other metadata
  • 📐 Auto Detection - Automatically detects slide size and aspect ratio
  • 🚀 Easy to Use - Simple command line interface with beautiful output
  • 📄 Page Selection - Convert specific pages with --pages option
  • Parallel Processing - Speed up conversion with --parallel option
  • 🔍 Dependency Check - Automatically checks for required tools
  • 🎨 Web UI - Modern web interface with drag-and-drop support
  • 📡 REST API - FastAPI server with async processing
  • 🔧 MCP Support - Model Context Protocol for AI integration
  • 🐳 Docker Ready - All-in-one Docker image available

🎯 Motivation

  • LaTeX users can easily convert beamer slides from PDF to PPT
  • Typst users can easily convert touying slides from PDF to PPT

🚀 Quick Start

Option 1: Command Line (pipx)

# Install via pipx (recommended)
pipx install pdfslides2ppt

# Convert PDF to PPT
pdf2ppt input.pdf output.pptx

Option 2: Web UI (Docker)

# Pull and run
docker run -d -p 8000:8000 neosun/pdf2ppt:latest

# Access at http://localhost:8000

Option 3: API Server

# Install with server dependencies
pip install "pdfslides2ppt[server]"

# Start server
python -m uvicorn web.app:app --host 0.0.0.0 --port 8000

📦 Installation

Prerequisites

  • Python >= 3.9
  • pdf2svg - for PDF to SVG conversion
  • Inkscape - for SVG to EMF conversion

Install Dependencies

macOS:

brew install pdf2svg inkscape

Ubuntu/Debian:

sudo apt-get install pdf2svg inkscape

Windows:

Install pdf2ppt

# Recommended: Install with pipx (isolated environment)
pipx install pdfslides2ppt

# Or install with pip
pip install pdfslides2ppt

📖 Usage

Basic Usage

# Specify output file
pdf2ppt input.pdf output.pptx

# Auto-generate output filename (input.pptx)
pdf2ppt input.pdf

# Verbose mode
pdf2ppt input.pdf --verbose

Advanced Usage

# Convert specific pages
pdf2ppt input.pdf -p 1-5,7,9-11

# Parallel processing (4 workers)
pdf2ppt input.pdf -j 4

# Force overwrite existing file
pdf2ppt input.pdf output.pptx --force

# Keep temporary files for debugging
pdf2ppt input.pdf --no-clean

Command Line Options

usage: pdf2ppt [-h] [-v] [--verbose] [--no-clean] [--no-check] [--force]
               [--pages PAGES] [--parallel PARALLEL]
               [--pdf2svg-path PATH] [--inkscape-path PATH]
               input [output]

positional arguments:
  input                 Input PDF file
  output                Output PPTX file (default: input.pptx)

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  --verbose             Verbose output
  --no-clean            Keep temporary files
  --no-check            Skip SVG filter check
  --force, -f           Overwrite output file if exists
  --pages, -p PAGES     Page range (e.g., "1-5,7,9-11")
  --parallel, -j N      Parallel workers (default: 1)
  --pdf2svg-path PATH   Path to pdf2svg executable
  --inkscape-path PATH  Path to inkscape executable

🔧 Technical Implementation

  1. Convert PDF to SVG using pdf2svg
  2. Convert SVG to EMF using inkscape (due to python-pptx limitations)
  3. Insert EMF into PPT using python-pptx

🛠️ Tech Stack

Component Technology
Language Python 3.9+
PDF Processing pypdf
PPT Generation python-pptx
PDF to SVG pdf2svg
SVG to EMF Inkscape
CLI Output rich

⚠️ Known Issues

Transparent Background

Elements with transparency are not fully supported due to dependency limitations. You will receive a warning when such issues are detected. You can manually copy the generated SVG to fix the problem.

See #1 for more details.

🤝 Contributing

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

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Copyright © 2023-2024 Teddy van Jerry (Wuqiong Zhao)

⭐ Star History

Star History Chart

📱 Follow Us

WeChat

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

pdfslides2ppt-1.2.0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

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

pdfslides2ppt-1.2.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file pdfslides2ppt-1.2.0.tar.gz.

File metadata

  • Download URL: pdfslides2ppt-1.2.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for pdfslides2ppt-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a16f62747626873a662024b89a032a1d14bbb97db5146b88338148b38b721066
MD5 e12ea1d5888979d2513c1e737fb2ebdf
BLAKE2b-256 83ccf6b0d60de2a9bc98ff2333c409f9e2817333e19e0446c53c2d136952400b

See more details on using hashes here.

File details

Details for the file pdfslides2ppt-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: pdfslides2ppt-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for pdfslides2ppt-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1acc99f8395cded5d37f1aeee9461dfa51136a0cc6d6fc5666be1ef538d8d780
MD5 78a83e7b599f7fbaab0c2a155c87fd05
BLAKE2b-256 31e827e6b8c0bddb2adb7cd910d200aced8ce39ec4949233b230b1cebeb2e302

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