Introduction
************

What ulif.openoffice is
=======================

``ulif.openoffice`` is a Python package to support document
transformations using OpenOffice.org (OOo).

It provides components to ask a running OOo-server for document
conversions from office-type documents like .doc or .odt to HTML or
PDF. Using ulif.openoffice you can trigger such conversions via
commandline or via a Python-API that works also with Python versions
without any PyUNO support.

Furthermore, it provides a caching server that caches all documents
once converted and delivers them in case a document is requested
again. Depending on your needs this can speed-up things by factor 10
or more.

Sources
=======

``ulif.openoffice`` is hosted on:

  http://pypi.python.org/pypi/ulif.openoffice

where you can get latest released versions.

The subversion repository of the sources is:

  https://svn.gnufix.de/repos/main/ulif.openoffice/

Requirements
============

``ulif.openoffice`` requires some PyUNO-capable Python somewhere to do
the actual conversions. It also provides a client-API for Python code that
does not provide that support. Current Debian-based distributions
normally offer a package for PyUNO support.

``ulif.openoffice`` is tested on Debian-based systems, most notably
Ubuntu, and **won't work on Windows**.

The package is designed for server-based deployments. While the
OOo-server is running, you cannot use the office-suite on your desktop
(at least at time of writing this). This is a limitation of OOo
itself.


Overview
========

``ulif.openoffice`` mainly provides three different components:

* An ``oooctl`` server that runs in background, starts a local
  OOo-server and monitors its status. If the OOo server process dies,
  it is restarted by ``oooctl``.

* A ``pyunoserver``, which is a TCP-server that implements an own
  protocol to listen for conversion requests. When a valid request
  arrives, it tries to contact a local OOo server to do the
  conversion.

  The ``pyunoserver`` also runs a cache manager that caches already
  converted documents and delivers them in case the conversioned
  version already exists.

  This component needs access to the PyUNO library.

* A client library to talk to the PyUNO server. This component does
  not require PyUNO.


The three components play together roughly as shown in the following
figure:

  .. figure:: overview.png

     Fig. 1: Overview of ulif.openoffice components

The blue lines show the way from a source document (in .doc
format) to the OpenOffice.org server while the red lines show the
way back of the converted document (PDF).

Use of client-API, ``oooctl`` server and cache is optional.

All this currently happens on the same machine. There are plans for
support of multi-machine scenarios with distributed servers and
load-balancing features.
