When Reveal.js print mode breaks slide layouts, a reliable fallback is to render the live deck in a headless browser, capture each slide as a screenshot, and stitch those screenshots into a one-page-per-slide PDF.
This preserves the on-screen deck exactly, including custom runtime layout behavior that may not survive ?print-pdf.
- Starts from a served Reveal.js deck URL
- Opens the deck in headless Chrome via Playwright