Here is a different approach, instead of creating a PDF report directly, you can create your report in a XML format first, and then use a XSL stylsheet and Apache FOP to translate the XML file to a PDF file. The advantage is, by this way, you can easily provide your report in a different format (e.g. in HTML format), when it's needed, by just supplying a different stylesheet.