Jonathan Lamperth and Christian Holz
Sensing, Interaction & Perception Lab
Department of Computer Science, ETH Zürich
This is the repository for the software project SVG2Keynote, a macOS tool to convert Scalable Vector Graphics to Apple Keynote documents. SVG2Keynote preserves shape information (path styles, fills), such that shapes can be edited in Keynote.
For .key file format handling, SVG2Keynote GUI uses our library SVG2Keynote lib.
brew install protobuf
First clone the repository:
git clone https://github.com/eth-siplab/SVG2Keynote-gui
Then just open the ".xcodeproj" file with Xcode and build. This will create your own signed KeynoteSVGUI.app
, allowing the application to be run without any issues.
Download and run this executable from the command line. As this is then not packaged as a MacOS application, Apples signing security checks do not come into play.
Due to Apple's Gatekeeping this option is tedious and not recommended.
It is possible, that you will have an issue due to the protobuf version of KeynoteSVGUI and the locally installed version not matching. Here it should suffice to create a symlink.
To do this you must find out the name of the installed ".dylib" for libprotobuf on your system. You can find this by running
find /usr/local/lib -name "libprotobuf.*"
Say for example you now find "/usr/local/lib/libprotobuf.30.dylib" in the results.
Next you need to find out what file is referenced by the KeynoteSVGUI executable.
Currently this is "/usr/local/lib/libprotobuf.26.dylib", but if this changes you can open the executable in a text editor and search for the path beginning in "/usr/local/lib/libprotobuf".
Once you have both of these values you can the run:
ln -s <installed_library> <referenced_library>
#In the above mentioned case:
ln -s /usr/local/lib/libprotobuf.30.dylib /usr/local/lib/libprotobuf.26.dylib
In the optimal case you would compile the software in Xcode from source, and then this issue should not arise.
Once the app has launched you should see the following icon in your toolbar:
Once clicking on the icon you will be greeted with the following popover:
Here the UI should be pretty straightforward.
CMD + V
There are some shape types and SVG features which unfortunately do not yet work well with this new method. In this case you can use the button "Convert to PDF Clipboard", to convert the SVG into a PDF file, which can then similarly be pasted into your keynote document and scaled as you could any vector graphic. Unfortunately with this backup solution, you cannot edit the shape inside of keynote, as it is only recognised as a PDF file.
Note: In order to use "Convert to PDF Clipboard", Inkscape must be installed. It was tested via homebrew installation of Inkscape:
brew install inkscape
The main reason to use this tool, it to be able to edit vector graphics inside of Keynote's native file format. This isn't initially possible upon pasting.
First you must right click on a path and select "Make Editable":
Then you can see and move all of the nodes:
To be able to change the bezier curves, you can right click any node and select "Make Bézier Point", and then should be able to move the in and out Points.
This tool is built upon the c++ library: SVG2Keynote-lib
, which I created for the underlying conversions take place. This c++ library uses the NanoSVG C library, from which some of the shortcomings stem from.
NanoSVG does not support "Use" element in SVGs and seems to have some issues converting some shapes into their respective paths.