unoconv converts any document format that OpenOffice can import, to any
document format that OpenOffice can export.

unoconv uses the OpenOffice's UNO bindings for non-interactive conversion
of documents.

unoconv tries to start an ooffice instance (if it cannot find a running one)
that it then uses and destroys. However the success rate of starting and
stopping this ooffice instance depends on some outside factors.

Since there is no feedback mechanism to see if the newly started ooffice is
in fact ready to communicate, we don't know exactly when we can use the UNO
api. By default unoconv waits for 3 seconds, but you can specify another
delay with -T/--timeout. If ooffice is not ready, you may get a random error.

However, you can always start an instance yourself at the default port 2002
(or specify another port with -p/--port) and then use unoconv until you're
finished using it and then stop it.

    unoconv --listener &
    sleep 20
    unoconv -f pdf *.odt
    unoconv -f doc *.odt
    unoconv -f html *.odt
    kill -15 %-

Also possible is to use a listener or OpenOffice instance that accepts
connections on another system and use it from unoconv remotely. This
way the conversion tasks are performed on a dedicated system instead
of on the client system.

Since OpenOffice 2.3 you do not need an X display for starting ooffice.
However you may need the package from your
distribution. Since OpenOffice 2.4 nothing special is needed, running
in headless mode does not require X.

For any older OpenOffice releases, remember that ooffice requires an X
display, even when using it in headless mode. One solution is to use Xvfb
to create a headless X display for ooffice.

Also beware that the pyuno python module needs to be compiled with the exact
same version of python that you are using to load it. A lot of people that
run into problems loading pyuno are actually using a precompiled OpenOffice
that they downloaded somewhere and is incompatible with their python version.
(Sometimes the OpenOffice comes with its own python wrapper.)

Other tools that are useful or similar in operation:

 + Text based document generation

 + DocBook to OpenDocument XSLT

 + Simple (and stupid) converter from OpenDocument Text to plain text

 + Another python tool to aid in converting files using UNO

Please send me improvements to this document.