libetonyek
is a library and a set of tools for reading and converting Apple iWork documents (Keynote, Pages and Numbers). Supported versions are Keynote 2-6, Pages 1-4 and Numbers 1-2.
See FEATURES.md for more details about what is currently supported.
Keynote documentation is, sadly, scarce. There are two official Apple documents: The first one is Technical Note 2073 (TN2073), describing basic parts of the Keynote 1 format. The second is iWork Programming Guide, containing an overview of the Keynote 2 structure. Unfortunately it mostly documents things that do not need to be documented: I mean, anyone can guess what elements like slide, master-slide, stylesheet or layer mean, right? But how exactly does style inheritance work?
Which elements can be saved as a reference? What do all these 1-3 letter elements and attributes in table model mean?
These and a lot of other questions remain unanswered. And that is just the first incarnation of the version 2 format; nobody knows what has changed since then.
Based on the previous paragraph, it should be clear that most of the code in this library is based on guesses, sample presentations created in Keynote '09 and "real-life" presentations collected on the Internet.
libetonyek
requires boost
, glm
, liblangtag
, librevenge
, libxml2
, libmdds-dev
and zlib
to build.
For Ubuntu you need to install:
sudo apt install libboost-dev libboost-filesystem-dev libglm-dev gperf liblangtag-dev librevenge-dev libxml2 libmdds-dev doxygen
doxygen
is optional for documentation building and can be disabled by passing --without-docs
to configure.
Once you have the source code and the dependencies, you can proceed to build. To do that, run the customary sequence of commands in the source code directory:
./autogen.sh # only needed for building from git
./configure
make
make install
The information how to contribute to project is available here.
The library is available under MPL 2.0+.