OpenDoc Mill

OpenDoc Mill is a data-driven document generation system for software developers. It is like a very advanced version of the "Mail Merge" facility included in most word processors.



Template design is easy. Just use as a very powerful "GUI designer". You do not need to be a programmer to design or modify a template. Complex and attractive designs can be created with a tiny fraction of the expertise required to program effectively in XSLT and XSL-FO.

Complex documents can be created. Each Heading 1 in the template demarks a new subsection. Subsections can be repeated as required in the output document (e.g. to create a "specification" page for each of 100 components). Tables are supported, and graphs and other images can be generated and included from external files.

Generation is fast. Documents are rendered by manipulating file data, not by loading them into a word processor. This is possible because OpenDocument files are zipped XML. The template is only loaded once; then output files are created by string concatenation into a ZIP file. Depending on the use case, this can be several orders of magnitude faster than invoking an XML parser or manipulating a document in a word processor programmatically.

Maturity. OpenDoc Mill and its predecessor have been in live use at a number of sites for several years. It is used at Land Rover to generate complex engineering reports of several hundred pages, including multiple graph images, which takes less than a second on ordinary PC hardware.

Platform independence. OpenDoc Mill is written in Python, and can be used as a stand-alone process to integrate with systems written in any language.


This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.


Source code, with usage examples

Python Egg