Requirements for the library
Before we embark on writing the library, let us scribble down a preliminary requirements statement as follows:
For a large class of business applications, we require tabular reports in various formats. The popular choice for output formats are PDF, HTML, SVG, and so on. We should create a library to produce tabular output in these formats. The library should define a unified programming model, and serve as an API for the developers. The contents of the documents and its tables should be separated from the processing layer to incorporate future output drivers.