Compile a Beamer PDF into a standalone HTML presentation with clickable links, overlays, and media.
Project description
LunarBeam
Turn your Beamer PDF into a media compatible, interactive HTML presentation. With overlays, clickable links, embedded videos/GIFs, and a laser pointer – no LaTeX installation needed on the presenting machine.
Why LunarBeam?
- Present anywhere – just double‑click
index.html(or open it in a browser). No Python, no LaTeX, no projector software. - All features intact – overlays (
\pause,\only,\uncover), internal/external hyperlinks, videos and GIFs (via a simple JSON sidecar), and a laser pointer. - Pixel‑perfect scaling – the slide image fits any screen size without moving your clickable areas.
- Offline & portable – share a single folder or zip file; everything is included.
Installation
LunarBeam requires Python 3.9 or later.
pip install lunarbeam
Quick start
- Compile your Beamer PDF as usual (e.g.,
pdflatex presentation.tex).
pdflatex mytalk.tex
convert the PDF to an interactive HTML presentation:
lunarbeam mytalk.pdf
- Open
mytalk_pres\index.htmlin a web browser to present.
cd mytalk_pres
python -m http.server 8000 # or simply double-click index.html
Command‑line options
usage: lunarbeam [-h] [-o OUTPUT] [--tex TEX] [--nav NAV]
[--project-dir PROJECT_DIR] [--no-validate]
[--resolution RESOLUTION] pdf
positional arguments:
pdf Path to the compiled Beamer PDF
options:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
Output directory (default: <pdf_basename>_pres/)
--tex TEX Path to the LaTeX source (auto‑detected)
--nav NAV Path to the .nav file (auto‑detected)
--project-dir PROJECT_DIR
Directory where auxiliary files are searched
--no-validate Skip consistency checks between PDF and .nav
--resolution RESOLUTION
Render resolution as WIDTHxHEIGHT (e.g. 1280x720).
Default: 1920x1080
Including videos and GIFs
LunarBeam uses a simple JSON file. Place it next to your PDF with the same base name, e.g. mytalk_media.json.
{
"media": [
{
"phys_page": 5,
"type": "video",
"file": "media/demo.mp4",
"x": 200,
"y": 300,
"w": 640,
"h": 480,
"autoplay": true,
"loop": true,
"muted": true
},
{
"phys_page": 7,
"type": "gif",
"file": "media/animation.gif",
"x": 400,
"y": 150,
"w": 400,
"h": 300,
"autoplay": true,
"loop": true
}
]
}
Coordinates are in pixels relative to the rendered slide image (default 1920×1080).
Put the actual media files (demo.mp4, animation.gif) in a media/ folder next to the PDF. LunarBeam will copy them into the output.
Contributing Pull requests are welcome! Please open an issue first to discuss what you’d like to change.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lunarbeam-0.1.0.tar.gz.
File metadata
- Download URL: lunarbeam-0.1.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a8f263e589e7709cb7caffbd35e8d3fd40bfad83a8d9b01d7b3c8060e0ed7c1
|
|
| MD5 |
9bbd1e7e6064ad68cd8dbd559130628b
|
|
| BLAKE2b-256 |
57ca3dc17634442f0d2f6cf48349867ff1874c2676015b38fbceaf1ea23bd6e6
|
File details
Details for the file lunarbeam-0.1.0-py3-none-any.whl.
File metadata
- Download URL: lunarbeam-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f24835db73e55a29915e939348b876234f4dd4aa4b25dc3ccc98b01ea0b1798
|
|
| MD5 |
c282208e545b584dc25dcb256124b283
|
|
| BLAKE2b-256 |
5354622ecd32470bfcbff201e288e2d5806d5dbb2bad7957910ba61145ba5a9e
|