Introduction

The Python Obviously Simple Text (POST) project is a collaborative effort to produce reusable components for the generation of multi-targeted output documents from simple text sources.

1.1 Problem: Generating Multiple Document Output Formats

Applications today are faced with the problem of generating output documents that may be targeted for many different purposes. Application output may be formatted as HTML for direct display in a browser, placed into a platform-neutral medium like the Portable Document Format (PDF) for widespread dissemination, or written into a form to be read into other applications for further processing. Ideally, application developers should have tools available for generating these different output formats that make the process easy to implement, but without sacrificing significant flexibility to produce quality results or to extend and build on previous work.

1.2 POST Approach

POST addresses this problem with two complementary objectives. The first is to provide an Application Programming Interface (API) for implementation of document generation modules that output different document formats. These document generator modules will provide a broad selection of available document types that applications written to use the POST API for output will be able to support without additional programming effort. POST currently is distributed with functional output generators for HTML, PDF, Rich Text Format (RTF), LaTeX source, and nroff/groff source formats.

The second objective of POST is to provide components and examples (from which developers may freely build) to help perform the equally important programming tasks of collecting document inputs and assembling them into desired document structures in preparation for generating final output. Current development is focussed on flexible handling of text inputs, particularly XML formats, for representing both the style and content of document outputs.

1.3 POST Applications

A POST approach to document generation is particularly well suited for applications which need to dynamically produce document output based on varying data inputs and/or changing user requirements. These applications could include online data management, information retrieval services, data analysis reporting functions, and generally any application where real-time generation of documents might be preferred over having to store and maintain versions of documents in multiple formats.

Example code included in the POST distribution illustrates how various text source files, including XML formatted text, can be easily processed into POST output generation commands to produce documents on demand. The examples illustrate that useful document management approaches such as document templates, libraries of reusable document components, and separation of document style from content are easily accomplished with POST.

1.4 Building From Here

POST is a work in progress. We are providing a starting point from which additional developments and refinements can be made to make POST a more useful tool for a wider range of Python developers. Exactly what transpires in the future will depend in large part on what users decide they want from the tools, and how those desires match up with available resources to continue development. The modules provided are considered functional, but are certainly not bug-free. You are free to use them as you see fit, according to the conditions spelled out in the GPL.

Success for this project will depend in large part on contributions that may take many forms, including but not limited to patches for fixing bugs or providing additional features, bug reports, examples of applications which employ POST components, suggestions for POST improvements, and all of the other myriad ways in which open-source efforts are supported by the community at large.