Skip to content

Releases: stoatworks-labs/presentation-converter

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 30 Jul 20:04

presentationconverter-*.tar.gz — the Nextcloud app. Unpack into your
instance's custom_apps/ and enable it.

presentation-converter-*.tgz — the npm packages (core, cli, server),
installable with npm install <file>. The CLI's binary is
presentation-converter.

No desktop installers: this project has no GUI. It is a CLI, a library, an HTTP
server and a web front-end.

Converts Keynote / PowerPoint / Slides / ODP to PDF plus a .notes.json
presenter-notes sidecar
. Exporters drop hidden slides, so the slide count and
the PDF page count do not necessarily match — the notes are parsed from the
source XML rather than the rendered output for that reason.

What's Changed

New Contributors

Full Changelog: v0.1.0...v0.1.1

v0.1.0 — PDF conversion that keeps the presenter notes

Choose a tag to compare

@stoatworks-labs stoatworks-labs released this 29 Jul 01:05

First release.

Converts Keynote, PowerPoint, Google Slides, Canva and OpenDocument presentations to PDF — and keeps the presenter notes, in a .notes.json sidecar written beside each PDF.

Converting a folder of presentations

The problem it solves

Exporting a deck to PDF is easy. Every tool that does it throws the speaker notes away — which is a problem if the PDF is what you actually present from.

Worse, a deck's slide count and its PDF's page count usually disagree, because exporters silently drop hidden slides. A 4-slide Keynote deck with one skipped slide exports 3 pages, so a naive tool puts slide 3's notes on page 3 and every note after that is a page out.

This reads the PDF back, reconciles the two, and records what it did — exact, adjusted, or mismatch. A mismatch is reported loudly rather than quietly emitting misaligned notes.

What's in it

  • CLIconvert, batch, watch, serve, doctor; all with --json
  • GUI — files, whole folder, watch folder, and account settings, with live progress
  • Library@presentation-converter/core, for embedding in other apps
  • Nextcloud app — keeps a whole folder tree converted automatically

Notes extraction is deliberately independent of PDF rendering: for Office and ODF formats the notes come straight from the source package's XML, so they're the author's exact text regardless of which engine drew the PDF — and it works headless.

Getting started

git clone https://github.com/allansargeant/presentation-converter.git
cd presentation-converter && npm install && npm run build
node packages/cli/dist/index.js doctor

Install LibreOffice for PowerPoint and ODP; on macOS, Keynote can stand in for it.

Please read before relying on this

Verified end to end on macOS against real Keynote-authored fixtures and a real Canva export: conversion, hidden-slide mapping, batches with tree mirroring, incremental re-runs, collision detection, the watch folder, the GUI, and the macOS worker endpoint.

Three things are not verified, and you'll hit them first:

  • The Nextcloud app has never been run — it was written on a machine with neither PHP nor Docker, so it has not been executed or even lint-checked. Shake it down on a test instance first.
  • Live OAuth round trips for Google and Canva are untested; both need real credentials and a human at the consent screen. Everything up to the handshake is verified.
  • The LibreOffice engine is untested — LibreOffice wasn't installed during development, so Office and ODF rendering went through Keynote instead.

Full detail in CHANGELOG.md.

🤖 Generated with Claude Code