I need to generate a PDF from a JSP JSF page. I have searched the net, but I didn't found any examples of how should I do this. I need to transform the whole page, or maybe only the charts that I have on that page.
P.S. I'm also using IceFaces.
I need to generate a PDF from a JSP JSF page. I have searched the net, but I didn't found any examples of how should I do this. I need to transform the whole page, or maybe only the charts that I have on that page.
P.S. I'm also using IceFaces.
As far as I know this isn't directly possible. You can use Jasper Reports to generate a pdf on the server side. Or, you can use PrintPDF which is a firefox plugin to create one from the web browser.
The easiest way is probably to capture the HTML using a Filter and convert that to PDF using a suitable API, then return the application/pdf
data from the Filter
. The IceFaces partial-submit support can probably be used to capture a subset of the component tree output, but you'll probably have to study the details of the IceFaces HTTP requests to figure out how to leverage that.
You will probably need the following:
Capture the (X)HTML output of your page. This can be done via the following code in a servlet of yours :
InputStream is = new URL("http://localhost/foo/page.jsf").openStream();
Transform the captured content to pdf. See FlyingSaucer (and additionally - this thread)
"Send" the generated pdf. That is, simply write (print) your pdf to the response.getOutputStream()
, and set a Content-Type header - response.setContentType("application/pdf")