A simple cross-platform app to present a PDF slideshow. Based on Avalonia and MuPDF.NET.
- Presenter view
- Displays current slide and previews the next one
- Timer (starts automatically on first slide switch, start or reset manually with
S) and current system time in 24h format
- Navigate slides
- Slide number based on PDF page labels; pages with same label are assumed to be part of a single animated slide
- Forward and backwards via arrow keys
- Type number and hit
Enterto jump - Clickable slide-thumbnails with current slide highlighted
- Fullscreen slide view
- In a separate window
- Open with
F5close withESC - Keyboard shortcuts (
Shift + Nto move to the n-th screen)
- Simple drawing tool
- Sketch temporary drawings on the slide
- Resets on slide navigation or via
Backspace - Supports pen pressure
- Magnifier
- Select a crop via right-click and drag or
Ctrl+left-click and drag - Reset via right-click or
Ctrl+left
- Select a crop via right-click and drag or
- Recent files (open dialog with
R)- List of opened files is tracked in a
.csvfile in theApplicationDatafolder (as reported byEnvironment.SpecialFolder.ApplicationData)
- List of opened files is tracked in a
- Speaker notes
- As embedded files in the PDF
- filename must be
XX-speaker-notewhere XX is the slide number (page label, not "real" page) - content is interpreted as UTF-8 string
- filename must be
- As annotations: annotations in the PDF are rendered into the presenter view only
- As embedded files in the PDF
- Video via libVLCSharp
- Embedded files in in the PDF with special filename provide video playback hints:
XX-video-FILENAMEwhere XX is the slide number andFILENAMEthe relative path from the.pdfto the video- the file description must be
X,Y,WwhereXandYare the top left corner andWthe width of the video in the.pdf(in points)
- Playback starts automatically in the fullscreen display when the slide is opened
libVLCis an optional dependency; without it, PDFs that don't contain video can still be presented
- Embedded files in in the PDF with special filename provide video playback hints:
Currently, no binaries are provided. Only tested on Windows and Linux, but should run on any platform supported by Avalonia and MuPDF.NET.
To run from source, install the .NET SDK and run
dotnet run -c Release
To build deployable binaries
dotnet publish -c Release
For video support on Linux, install libvlc. Something like
# Debian / Ubuntu / etc
sudo apt install vlc libvlc-dev
# Fedora etc
sudo dnf install vlc vlc-devel(see https://github.com/videolan/libvlcsharp/blob/3.x/docs/linux-setup.md) Without libVLC, if you open a PDF with a video, beampdf will crash when trying to play it currently.
On Windows, the screen is kept awake while the DisplayWindow is open (via WinAPI). On Linux, similar behavior can be achieved by running via
systemd-inhibit beampdfSee beampdf.typ for the Typst code to output speaker notes and video links in the PDF. An example for a full slide can be found in the Test directory.

