I have developed a web application that uses JasperReports. I noticed that the reports a开发者_Python百科re printing server-side.
How do you make the reports print client-side (from the web browser)?
Any insights will be helpful.
Presuming you have a Servlets-based architecture:
- Get a handle on the
HttpServletResponse
instance withHttpServletResponse response = this.getThreadLocalResponse();
(for instance). - Set the various headers to indicate a file attachment.
HttpServletResponse response = getServletResponse(); response.setHeader( "Content-Description", "File Transfer" ); response.setHeader( "Content-Disposition", "attachment; filename=" + "report.pdf" ); response.setHeader( "Content-Type", "application/pdf" ); response.setHeader( "Content-Transfer-Encoding", "binary" );
- Configure the
JRExporter
(jre) to use the HttpServletRespone's output stream:jre.setParameter( JRExporterParameter.OUTPUT_STREAM, getOutputStream() );
- Execute the report.
The browser will prompt the user to save the report as a PDF file. The user can print the PDF.
精彩评论