In Windows it is possible to load and instantiate COM/ActiveX components, e.g. PowerPoint, and use them to render in your UI of choice.

With e.g. WebKit, this seems to be possible as WebKit is accessible through /System/Library/Frameworks/WebKit.framework.

Is it possible to do something equivalent in OS X with Keynote?

  • 1
    After poking around, I found Quick Look that can preview Keynote files, among other things, and looks as though it can be integrated into a UI. – user36857 Dec 18 '12 at 13:29

Yes, on OS X - the technology used to make most programs is Objective C where messages get passed from the UI to the logic and a model-view-controller idiom is used.

If you are skilled, you can do things like patch the binary to swizzle a method or use SIMBL to modify apps that do not have a plug in system like Keynote.

These reverse-engineering feats require some very detailed skill and can break each time the app is updated, so something that is theoretically possible becomes unlikely to happen as something you can download for free with the work already being done for you.

Your commend about the quicklook ability to preview keynotes is where I would start if you wanted to develop a true application to read keynote files. From there, you would need to reverse engineer the storage format by discovering that a .key file is really just a fancy zip file and go from there.

  • Thank you for your response. Building a reverse engineered Keynote viewer from scratch is not feasible, in any realistic time-frame. I am not familiar with SIMBL, and I will look into this. Thank you for the informative input. – user36857 Dec 22 '12 at 21:12
  • Most people are fine with unzipping the file and using the previews. You can also print a keynote to PDF (or render a quicktime movie of the presentation) if you need higher resolution slides to sling around. Both have clear downsides that are obvious since you are asking for an actual file viewer :) – bmike Dec 22 '12 at 21:19
  • Using a PDF is not an option, as e.g. transitions are lost. It seems as though Quick Look or SIMBL is the way to go. Thank you for your input. – user36857 Dec 22 '12 at 21:24

Don't forget that a Keynote can be exported to the QuickTime .mov format. This preserves transitions and builds, and even click-to-advance. I'm certain this could be embedded into a custom UI.


As you said, Quick Look is the way to go. But the support for eg. advanced animations isn't perfect I think. You could also try to export your .key to HTML if you have direct access, and via injected js take the control over the playback (The html is actually images that are animated through js/css). Put it into a NSWebView or something.

  • Thank you for your response, and observation regarding Quick Look. Exporting to HTML is not an option as the presentation loses fidelity, compared to the Keynote version. – user36857 Dec 22 '12 at 21:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .