Reveal.js en pdf-export

De laatste 15 jaar heb ik heel graag gewerkt met de beamer-class van LaTeX om PDF-presentaties aan te maken. Het is een leuke werkmethode en het resultaat mag er ook best wezen. En niet te vergeten: gratis en vrij en je hebt enkel een pdf-viewer nodig om je presentatie te tonen: dat is net veel leuker dan een beroep te moeten doen op een propriëtair programma. 

Je hoort mij al afkomen... hoewel het heel leuk is om met beamer aan de slag te gaan is er een maar... De eisen van de hedendaagse presentaties verschuiven: naast het tonen van tekst en afbeelding worden er ook video's geïntegreerd. En net met dit laatste is het moeilijk met beamer (onder linux). 

Dus op zoek naar een alternatief voor beamer. De eisen zijn redelijk eenvoudig: 

  • gratis en vrij
  • gemakkelijk aan te maken
  • te bedienen met een niet-proriëtair programma
  • portable: overal mee te nemen en overal aan te passen 
  • ... en natuurlijk: ook vlot video's (online en offline) afspelen. 

Na lang zoeken kwam ik terecht bij Reveal.js: open source, vrij, gratis ... en gewone html met javascript. Je kan de howto lezen op de website van reveal.js. Met wat kleine ingrepen was het mogelijk om ook lokaal de html aan te maken en uit te voeren. Omdat het gewoon html is dat je moet schrijven en elke webbrowser sowieso video kan afspelen was de keuze snel gemaakt. Het komt ook met leuke extra's zoals een video-achtergrond, toets 'esc' voor een overzicht, toets 's' voor speakersview, enz. 


Maar ook bij reveal.js is er een maar... hoewel fantastisch om te presenteren mankeert het de mogelijkheid om een degelijke PDF-versie van de presentatie te maken ;-) Ook handouts zijn minder gemakkelijk... Ja ik weet ook wel dat er gesuggereerd wordt om in google-chrome te laten afdrukken naar pdf. Maar als je eerlijk bent: het eindresultaat valt tegen... 

Hoe dit oplossen. Op de website van reveal.js wordt decktape gesuggereerd. Dus installeren maar. Helaas geen debian-debpakket... Dus eerst npm installeren: 

open terminal, log in als root met su -c . Daarna apt install npm

Blijf ingelogd als root: installeer decktape en puppeteer. 

npm install -g decktape

npm install -g puppeteer

Blijkbaar zijn volgende pakketten ook nodig ;-) 

apt-get install -y libgbm-dev

python3 -m pip install websocket


Voila, geïnstalleerd. Je volgt de instructies op de website van decktape maar er lijkt iets niet te kloppen: je hebt google-chrome nodig. 

Navigeer naar https://www.google.com/chrome/ en installeer google-chrome (zie debian 11 handboek)

Opnieuw volg je de instructies... lukt niet echt... Frustratie. Verder zoekend kom je tegen dat 

a) het pad naar google chrome niet correct is ingesteld

b) het beter lukt van een lokale webserver...

Hoe op te lossen? 

a) Waar is google-chrome geïnstalleerd. Kom het te weten met het commando which google-chrome (op Debian 11). Voer deze locatie in in het decktape commando met de optie --chrome-path /usr/bin/google-chrome 

b) Hoe in godsnaam start je snel een lokale webserver op? Gelukkig heeft python er eentje in de aanbieding ;-) Op Debian 11 voer je gewoon volgend commando uit als gewone gebruiker:

python3 -m http.server 8000


Voila alles is nu ingesteld om een mooie pdf van je reveal.js presentatie te maken:

decktape --chrome-path /usr/bin/google-chrome automatic http://127.0.0.1:8000/websites/godsdienstig/docs/koenwybo/vijf/presentaties/liefde-dimensies.html testdecktape2.pdf

  • Maakt een pdf-bestand aan genaamd testdecktape2.pdf
  • van de reveal.js-presentatie die zich bevindt in mijn /home in de map: 
    /websites/godsdienstig/docs/koenwybo/vijf/presentaties
  • met als naam liefde-dimensies.html