If you are like me who like to use Keynote to create slides for presentations, you might have encountered issues when trying to present your slides on public devices. As most public PCs are Windows systems, you will need to convert your Keynote slides to PowerPoint. However, the conversion process might introduce a couple of problems to your slides, including but not limited to:
- Misaligned text boxes due to different font rendering and missing fonts (because some
otf
fonts can not be embedded in the PowerPoint file) - Videos cannot be played or not starting from desired location (because PowerPoint for Windows has limited video format support, and the video's trimming settings will be lost)
- Math equations look different (because PowerPoint does not support LaTeX natively)
- Transitions and animations are not preserved
- Images and Gradients can no longer be edited
For more information, Apple has compiled a full list of compability list between Keynote and PowerPoint, which you can find here. What's worse, if you think your slides is simple enough and choose to export your slides to PowerPoint, there would be an extra layer of uncertainty: even sometimes the slides look perfect on your Mac's PowerPoint, they will lose all the fonts and formatting when opened on a Windows machine. This is extremely frustrating when you discover the problem right on the spot.
Although for static presentations, you can choose PDF export to guarantee the viewers see exactly what you see, it is not an option if you want to present transition animations or videos. From my practice, I found that the most reliable way to present Keynote slides on Windows devices is to export the slides in HTML format. This operation generates a self-contained HTML project that can be opened in any modern browser. The HTML project includes all the resources needed for the slides including videos and images. Under the hood, Keynote generate a set of PDF files for each stage of the builds and animations, and use JavaScript to control transitions.
Using H.264 Codec for Videos
If the embedded video uses a video codec that is not supported by older versions of iOS (e.g. H.265), the generated HTML file will not be able to play the video. You might want to make sure that your video is encoded with the H.264 codec. If you have ffmpeg
installed on your system, you can use the following command to convert the video:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
Here -crf
is the quality parameter named Constant Rate Factor, where lower values mean higher quality. In most cases, a value between 17 and 28 is acceptable, and I personally use 23 in most cases.
Use Chromium-based Browsers
I found some pages of the HTML document are not properly rendered in Firefox (see examples below). Please remember to use Chromium-based browsers such as Google Chrome, Microsoft Edge, or Brave to open the document.
Exporting the Presenter Notes (If Needed)
If you need to read the presenter notes while presenting, you can print the slides using the "Handout" layout with "Include presenter notes" selected. Save the printing results as a PDF, and open it on a separate screen or device while presenting the slides in the browser. You can also consider using the Keynote Extractor tool (I am not affiliated with this tool), it creates a separate HTML document with slide content and presenter notes side by side.
Still, exporting the slides as HTML is not a perfect solution for the render results has limited resolution on high-DPI displays. The slides might look a bit blurry on high-resolution screens. Also, you won't be able to use the presenter notes and the timer while presenting. Nevertheless, this is by far the most reliable way to present Keynote slides on Windows devices if you want to keep every detail of your slides. If you have any other tips or better solutions, please let me know in the comments below.