OpenOffice Batch Export

I’m currently using Ubuntu Jaunty 9.04 as my primary operating system. I’ve been working with a set of presentation files that were originally in Microsoft PowerPoint format (PPT), but that I converted to OpenOffice Impress format (ODP) when it appeared that OpenOffice had an issue with retaining content formatting when exporting to PPT.

Multiple people have to handle these presentation files, though, and PPT is the most universal format supported by presentation programs like OpenOffice Impress and Keynote. Additionally, when the presentations are actually used, PDF is the required final format.

To alleviate myself of the need to export the ODP version to PDF and PPT manually each time I made changes to a presentation, I did some digging and came across the wonderful unoconv utility, which uses the OpenOffice UNO bindings to allow for conversion of documents between OpenOffice-supported formats.

If you have Ubuntu, installing the unoconv package via synaptic is all it takes to make this utility available to you. The only issue I ran into with that package is that the –list flag to return a list of supported formats returns the error "unable to get gail version number" without any output. Actual document conversion seems to work without issue.

If you don’t have Ubuntu, the unoconv web site makes Red Hat and Debian packages available as well as a tarball of the source code.

Below is the bash script I used.

#!/bin/bash
for file in `ls -1 *.odp`; do
    unoconv -d presentation -f pdf --stdout $file > PDF/${file/%odp/pdf};
    unoconv -d presentation -f ppt --stdout $file > .PPT/${file/%odp/ppt};
done

2 Comments

  1. thanks. for da’ script!

  2. Anonymous says:

    Be careful – I haven’t tested it lately but a few years ago I found that OpenOffice leaked memory like a sieve. I was using it from the command line to convert Word documents into postscript files, en masse (like a few hundred thousand). I was repeatedly using the same OOo Writer instance for speed – so it didn’t have to unload and reload between each convert.

    After about 5000 pages I’d have to do a kill on OOo before continuing because it would have eaten several GB of RAM.