Once you have your pdf generated do the following:
byte[] buffer = new byte[(int) pdfReport.length()];
InputStream fis = pdfReport.getInputStream();
fis.read(buffer);
fis.close();
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=report.pdf");
response.setContentLength(buffer.length);
OutputStream output = response.getOutputStream();
output.write(buffer);
output.flush();
Sorry I may have misunderstood you the first time. This is probably what you were looking for.
There are a bunch of different PDF-generation libraries[1], under various licenses. Of these, I've only tried the Apache FOP[2] one, but iText[3] looks pretty good.
[1] http://schmidt.devlib.org/java/libraries-pdf.html
[2] http://xmlgraphics.apache.org/fop/index.html
[3] http://www.lowagie.com/iText/