Link to Home

If this page looks abnormally plain, you should consider upgrading to a standards-compliant browser.

Links to other sections of this site appear at the bottom of the page.

PDF to Keynote

(icon for PDF to Keynote) PDF to Keynote converts PDF-based presentations (e.g., made using LaTeX with Prosper, Beamer or foiltex) into Apple's Keynote format.

Once translated into Keynote format, every page of your original PDF file becomes a PDF image, properly scaled and centered on its own slide. Although intended for presentations, you can also use it to create slides for the pages of regular documents.

Because each page of your original document becomes a PDF image, you can't easily edit those pages except by adding new content over the top to mask things out.

As a bonus, PDF to Keynote also exports to OmniGraffle!.


Wow, that's cool you say...? How do you get it? What does it cost?

Keynote 6.0, QuickLook, iPad and iCloud Support

PDF to Keynote doesn't directly support the file format used by Apple's newest versions of Keynote (which is an undocumented proprietary binary format), but as of version 1.04 (released October 29, 2013), it does produce a rendition of the Keynote '09 format good enough to adequately please these tools. If you have an earlier version, you can either download the most recent version of PDF to Keynote, or open your document in Keynote '09 and resave it. This latter strategy is useful if you've got old documents made by an earlier version of PDF to Keynote.

Uses for PDF to Keynote

Possible uses include

Why Keynote?

Presenting in Keynote has several advantages over Preview or Adobe Reader, including a highly configurable presenter display, rehearsal support, notes and annotations visible only to the presenter, and, of course, Keynote's trademark transitions.

Why OmniGraffle?

OmniGraffle is cool! If you don't own it, you should (many folks got it free with their Mac, courtesy of Apple). Because of the way PDF to Keynote works, it was “trivial” (at least in theory) to also export to OmniGraffle.

Release Notes

PDF to Keynote began as a Perl script (called pdf2keynote). It was sometimes a bit slow, so I thought it would be nice if it had a graphical interface so you could watch its progress as it saved the file. I also figured that such a tool could be useful to more people than just me, but that most other people would would prefer a GUI application.

Minor bugfix.
Improve Keynote '09 export compatibility. Now works with QuickLook, Keynote 6.0 as well as iPad and iCloud Keynote.
Issue a warning when people try to run PDF to Keynote as 64-bit on 10.5. (Also, recompiled so that it is 32-bit only on PowerPC.)
Switch from using TrimBox by default to using CropBox (which works better with Preview's "Crop Pages" functionality). But in case people want to use any of the other various boxes PDF has, it's now user selectable via a preference. And in case people can't remember what it's supposed to be, there is also an option to reset the preferences back to their defaults.
Compile as 64-bit for good citizenship in Snow Leopard, added support for more recent Keynote file formats (including iWork '09's zipfile-based bundles), fixed bug with automatic conversion when the file already exists.
Note: Under 10.5 Leopard, I recommend running as 32-bit [in the Finder, inspect the application and click open as 32-bit] because Apple's 64-bit PDF output libraries have some bugs not present in their 32-bit counterparts. You might speculate that there are no such issues in Snow Leopard, but I cannot confirm or deny such speculation because if I were testing the application under Snow Leopard, I would be under a non-disclosure agreement, which would be violated by comments such as "It works fine in 64-bit under Snow Leopard", so I offer no such comment.
Fixed problem with Localized.strings
Actually clip to PDF bounds
Handle auto-save when file exists
Added auto-save
Added auto-open / auto-close
Include the size of the current page as an available presentation size
Use TrimBox, then CropBox, then MediaBox to determine bounds of the image.
Generalized file-format support (If you can write a Perl/Python/whatever script to make an index file for your favorite file format that's saved as a “bundle”, you can make PDF to Keynote write that format. Write the script, and edit Config.plist and Info.plist and you're done.)
Provide names for the sizes
Added OmniGraffle support
Added basic AppleScript support, fixed minor bug
Improved error checking on save, run under 10.3.9.
defaults write net.clawpaws.PDFtoKeynote presentationSizes '("600 x 800", "1600 x 1800")'
defaults write net.clawpaws.PDFtoKeynote presentationSize "600 x 800"
Allow presentation size(s) to be customized via non-UI preferences, use
Fixed bug with rotated PDF files
First public release (not widely publicized)

How Does it Work?

Many applications store their files in “packages”. You can examine these packages with the Finder's Show Package Contents contextual menu—try it on a Keynote document and you'll see that it is really just a folder containing all the images used in the document (as separate files) and an all-important file (index.apxl.gz in the case of Keynote) describing everything else about the document. PDF to Keynote creates the folder and the image files, and then calls a Perl script to build the necessary index.apxl.gz file. The Perl script is remarkably “dumb”—it just pieces together three templates: the opening stuff that the file needs to begin with, a piece that is repeated for each slide, and the closing stuff that the file needs to end with.

An XML Rant

Human-readable files are a good thing. Human editable files are good, too. If the file-formats of Keynote and OmniGraffle weren't, at least to some extent, human readable, I wouldn't have been able to write PDF to Keynote, at least not this way.

But go on, take a look at the XML produced by Keynote, especially versions two and three. It's barely readable—you need to be a masochist to wade your way through the grotesquely tangled and verbose mess. It is, in essence, a dump of the internal data structures used by Keynote. And it isn't writable by anything except Keynote, because only the authors of Keynote know exactly what the rules are for the composition of a Keynote XML file. I worked out how to convert to Keynote only by taking an existing file saved by Keynote and experimenting by trial and error to see what I could throw out and what seemed to be required. The Keynote XML format is so bad that it isn't merely an embarrassment to Apple, it actually makes baby Jesus cry.

Keynote XML format is just one of several examples of ill-thought-out use of XML. XML does have its place, but before choosing XML as a format, you should understand the trade-offs involved in that choice. Know when you should use XML, how you should use it, and what the alternatives are. In particular, be aware of

So first, remember that XML is not a panacea—if you take crap and encode it in XML, it's still crap. Second, if you do use XML, you should either And remember, in the time it takes to write a DTD, you could have written a grammar specification for a parser generator like Yacc or Antlr.

Return to Top of Page