Open source implemenaton of RML (Report Markup Language) from ReportLab
Not all tags are supported, but most of them work.
Create a PDF file:
Use it as a python module:
import trml2pdf print trml2pdf.parseString(file('file.rml','r').read())
If you are using this for Django you can simply mark up an .rml file with the template system and then render it.