For your report content use some device independant mark up language (sgml, html, xml, sdf, etc.) and then use some tool to tranform the mark up file into a device meaningful format (dvi, ps, etc.).
For a quick and dirty solution, output to html and use html2ps. A better solution would be output in sgml and then use sgmltools to spew forth postscript or dvi.
I've been thinking on this problem a while, and have done a moderate amount of research, but I haven't started working on an implementation of anything yet. I intend to get around to building a system to do something like this but between lack of funds to buy some decent reference books (on xml or sgml) and lack of time between all the other pots I've got on the stove, I haven't done anything besides give a cursory look to the docs for projects such as sdf and sgmltools.