zoukankan      html  css  js  c++  java
  • jsp调用ireport进行客户端打印

    前提:客户端需要安装jdk,服务段需要有相关的jar包,itext包等。。。

    jsp:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <head>
    <title>打印</title>
    <link rel="stylesheet" href="/gbcpgl/gbcpgl_web/abc/public.css" type="text/css"/> 
    </head>
    <body scroll="no" style="overflow: hidden;">
    <object 
        classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
        codebase = "http://java.sun.com/update/1.6.0/jinstall-6u13-windows-i586.cab#Version=6,0,0,3" 
        WIDTH = "100%" HEIGHT = "100%" >
        <PARAM NAME = CODE VALUE = "EmbeddedViewerApplet.class" >
        <PARAM NAME = CODEBASE VALUE = "../../applets" >
        <PARAM NAME = ARCHIVE VALUE = "jasperreports-3.5.3-applet.jar,commons-logging-1.0.2.jar,commons-collections-2.1.jar" >
        <param name = "type" value = "application/x-java-applet;version=1.6">
        <param name = "scriptable" value = "false">
    <!--           请求的servlet路径         -->
        <PARAM NAME = "REPORT_URL" VALUE ="someServlet?someParam">
     
    </object>
    </body>
    </html>
     
    servlet核心代码:
    String jasperName = session.getServletContext().getRealPath("/report_print/office_template") + File.separator + "jywwdjb_bg2.jasper";
    try {
    DriverManagerDataSource ds = 。。。;
    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperName);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,paramMap,ds.getConnection());
      if (jasperPrint != null)
      {
      response.setContentType("application/octet-stream");
      ServletOutputStream ouputStream = response.getOutputStream();
      ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
      oos.writeObject(jasperPrint);
      oos.flush();
      oos.close();
     
      ouputStream.flush();
      ouputStream.close();
      }
    } catch (JRException e) {
    e.printStackTrace();
    }catch (Exception e) {
    e.printStackTrace();
    log.error(e.getLocalizedMessage());
    }
  • 相关阅读:
    使用SQLite做本地数据缓存的思考
    毕业后第一次跳槽面试的点滴记录
    Nancy基于JwtBearer认证的使用与实现
    谈谈Nancy中让人又爱又恨的Diagnostics【上篇】
    CentOS 7.x 防火墙开放端口相关用法记录
    浅析如何在Nancy中使用Swagger生成API文档
    浅析如何在Nancy中生成API文档
    初探CSRF在ASP.NET Core中的处理方式
    微信小程序支付简单小结与梳理
    浅析Content Negotation在Nancy的实现和使用
  • 原文地址:https://www.cnblogs.com/wangdonghua/p/3320794.html
Copyright © 2011-2022 走看看