This is a rendering server that will wrap an OpenOffice/LibreOffice server and provide a pythonic API which is remotely callable.

The main advantage is that your client code does not need to import pyuno... This is a main plus because pyuno is a pain to get working on Windows and some flavors of Linux, don't even think of Mac :)

Once you deploy a py3o.renderserver all you need in your python code is to use the py3o.renderclient which is really straightforward...


We recommend you use the dockerized versions from the dockerhub

Using this way you'll get the latest tested version of LibreOffice and py3o.renderserver without the hassle of building all the dependencies...

If you want to have templating fusion & document convertion in one single web service usable from any language with just HTTP/POST you can install py3o.fusion server. Which also exists as a docker image

Manual Installation


Install the latest JDK for your plateform. Here is an example for Ubuntu (13.04 or 14.04):

apt-get install default-jdk

This will give you the necessary tools to compile the juno driver.

You will need to install (and compile) the py3o.renderers.juno driver.

Follow the instructions from the driver's documentation to install it and then you're ready to start your own RenderServer

Running the server

Here is how we start the server on a Linux host (Ubuntu 16.04):

$ start-py3o-renderserver --java=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/ --ure=/usr/lib/libreoffice --office=/usr/share --driver=juno --sofficeport=8997

You MUST have a running LibreOffice (OpenOffice) server somewhere. In our example it is running on localhost with port 8997. Here is how you can start such a server on Linux (Ubuntu 13.04 / LibreOffice 4.0.4):

$ libreoffice --nologo --norestore --invisible --headless --nocrashreport --nofirststartwizard --nodefault --accept="socket,host=localhost,port=8997;urp;"

As you can see it works with OpenJDK, LibreOffice and even on 64bit systems :)