在浏览器生成PDF文件,主要用了JasperRunManager对象面的runReportToPdfStream方法,在WEB里一般都先用iReport生成jasper文件,这样就去解析JRXML文件了

例子如下

Java代码 收藏代码
  1. import java.io.IOException;

  2. import java.io.InputStream;

  3. import java.io.PrintWriter;

  4. import java.io.StringWriter;

  5. import java.util.HashMap;

  6. import javax.servlet.ServletException;

  7. import javax.servlet.ServletOutputStream;

  8. import javax.servlet.http.HttpServlet;

  9. import javax.servlet.http.HttpServletRequest;

  10. import javax.servlet.http.HttpServletResponse;

  11. import net.sf.jasperreports.engine.JREmptyDataSource;

  12. import net.sf.jasperreports.engine.JRException;

  13. import net.sf.jasperreports.engine.JasperRunManager;

  14. publicclass JasperReportServlet extends HttpServlet {

  15. privatestaticfinallong serialVersionUID = 1L;

  16. publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

  17. throws ServletException, IOException {

  18. //获得输出流

  19. ServletOutputStream outputStream = response.getOutputStream();

  20. //获得输入流

  21. InputStream inputStream = getServletConfig().getServletContext().getResourceAsStream("JasperFile//JasperReportFile.jasper");

  22. try {

  23. //生成网页的PDF文件

  24. JasperRunManager.runReportToPdfStream(inputStream, outputStream, new HashMap(), new JREmptyDataSource());

  25. //设置PDF格式

  26. response.setContentType("application/pdf");

  27. outputStream.flush();

  28. outputStream.close();

  29. } catch (JRException e) {

  30. StringWriter stringWriter = new StringWriter();

  31. PrintWriter printWriter = new PrintWriter(stringWriter);

  32. e.printStackTrace(printWriter);

  33. response.setContentType("text/plain");

  34. response.getOutputStream().print(stringWriter.toString());

  35. }

  36. }

  37. publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

  38. throws ServletException, IOException {

  39. this.doPost(request, response);

  40. }

  41. }