/pypdfdeck

Displays a PDF for presentations.

Primary LanguagePython

pypdfdeck

This is a tool for displaying a PDF file (e.g. from LaTeX Beamer) as a slide show.

The main features are:

  • Separate presenter window showing one slide ahead.
  • Countdown timer.
  • Slide dissolve animations (constant time, all slides).
  • Rasterizes pages before showing them, so the slide is not briefly blurred like Preview on a Mac.
  • Responds to Page Up/Down keys for compatibility with remote controls.

Usage

python3 pdfdeck.py ~/path/to/my_slides.pdf

Design

We use the pdf2image library to rasterize PDFs. pdf2image is a Python wrapper around the Poppler binaries.

We use pyglet to draw graphics, interact with the window system, read the keyboard/mouse, and to load and play videos. Depending on the platform, pyglet might also require ffmpeg for video functionality (experimental, on branch video for now).

Related work

There are many similar projects:

but none of them combines all of the features I wanted:

  • Supports Linux, MacOS, and Windows
  • Interacts with the OS via a lightweight event/GPU-focused library instead of a full cross-platform GUI toolkit.
  • Is written in scripting language. (PDF rasterization is the only performance-critical operation, and it's done with a library, so a fast language is not necessary.)
  • Supports multiple monitors and a presenter view.