I have a JSF/Seam web app which has a page with a form which, when submitted (button clicked), causes a PDF file to be dynamically created (in Java, server side) based on the form input. Currently what I have working is that the resulting PDF is returned to the browser as a file download, so the user can opt to save it or open it in Acrobat Reader for subsequent printing.
What I would like to happen is that the PDF is sent to the browser and printed (client side) without further user intervention (well, other than perhaps the Windows printer options dialog appearing, about which there's nothing I could do).
The solution seems to be based on having a hidden
However, I have no idea how to get the PDF into the iframe via the
<iframe src> point to a servlet URL which gets an
InputStream of the PDF and writes it to the
OutputStream of the response. You can if necessary pass JSF bean properties as additional GET parameters so that you can control the PDF generation.
doGet() method of the servlet in question can look like this:
String foo = request.getParameter("foo"); String bar = request.getParameter("bar"); response.setContentType("application/pdf"); InputStream input = generatePdfSomehowBasedOn(foo, bar); OutputStream output = response.getOutputStream(); // Now just write input to output.
much less how to automatically call print() on the iframe once the pdf has been loaded.
Hook a function on