Java Jasper报告在客户端打印,不生成报告

Java Jasper报告在客户端打印,不生成报告,java,Java,我在我的项目中使用struts和jasper报表,现在我遇到了一个问题,即每当我尝试打印报表时,服务器机器上就会出现打印机对话框,我希望它在客户端,而不以任何格式导出报表。我尝试了以下代码标签,它对我来说工作正常 步骤1: 在基本Jsp中(report.Jsp) 输入type=“hidden”name=“contextPath”value=”“id=“contextPath”/> 步骤2: 关于includesed js(report.js) 步骤3 在struts-config.xml文件上

我在我的项目中使用struts和jasper报表,现在我遇到了一个问题,即每当我尝试打印报表时,服务器机器上就会出现打印机对话框,我希望它在客户端,而不以任何格式导出报表。

我尝试了以下代码标签,它对我来说工作正常

步骤1: 在基本Jsp中(report.Jsp)

输入type=“hidden”name=“contextPath”value=”“id=“contextPath”/>

步骤2: 关于includesed js(report.js)

步骤3 在struts-config.xml文件上

<action path="/generateRecptReport" scope="request" parameter="method" type="com.cm.actions.ReceiptMakerProcessAction">
</action>

**步骤4 关于操作(Java代码)(ReceiptMakerProcessAction.Java)

公共ActionForward generateRecptReport(ActionMapping映射、ActionForm表单、HttpServletRequest请求、HttpServletResponse响应)引发异常
{
logger.info(“在generateRecptReport中”);
字符串p_company_logo=getServlet().getServletContext().getRealPath(“/”+“reports/logo.bmp”;
字符串reportPath=“/reports/MSSQLREPORTS/”;
String reportName=“receiptMemoReport”;
ReportsDAO reportdao=(ReportsDAO)daoimpinstancefactory.getdaoimpinstance(ReportsDAO.IDENTITY);
info(“实现类:+reportdao.getClass());
reportName=reportdao.getReceiptReportName();
if(CommonFunction.checkNull(reportName).trim().equalsIgnoreCase(“”)
reportName=“receiptMemoReport”;
Connection connectDatabase=ConnectionDAO.getConnection();
Map hashMap=新hashMap();
hashMap.put(“p_公司标志”,p_公司标志);
put(“IS_IGNORE_PAGINATION”,true);
尝试
{
InputStream reportStream=getServlet().getServletConfig().getServletContext().getResourceAsStream(reportPath+reportName+“.jasper”);
JasperPrint JasperPrint=null;
PrintWriter out=response.getWriter();
out.追加(“”);
out.追加(“”);
response.setContentType(“text/html”);
字符串htmlReportFileName=reportName+“.html”;
JRHtmlExporter=新的JRHtmlExporter();
request.getSession().setAttribute(ImageServlet.DEFAULT\u JASPER\u PRINT\u SESSION\u属性,jasperPrint);
exporter.setParameter(JRHtmlExporterParameter.OUTPUT\u WRITER,out);
exporter.setParameter(jreporterParameter.JASPER_PRINT,jasperPrint);
exporter.setParameter(JRHtmlExporterParameter.IS_使用_-IMAGES_-TO_-ALIGN,Boolean.FALSE);
exporter.setParameter(JRHtmlExporterParameter.IGNORE_PAGE_MARGINS,Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_in_ROWS,Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR,Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML,“”);
exporter.setParameter(jreporterParameter.OUTPUT_WRITER,response.getWriter());
浮球f1=1.2f;
exporter.setParameter(JRHtmlExporterParameter.ZOOM_比率,f1);
出口商。出口报告();
}
捕获(例外e)
{
e、 printStackTrace();
}
最后
{
ConnectionDAO.closeConnection(connectDatabase,null);
clear();
}
返回null;
}
希望这将有助于Jasper报告在客户端打印而不生成报告

<action path="/generateRecptReport" scope="request" parameter="method" type="com.cm.actions.ReceiptMakerProcessAction">
</action>
public ActionForward generateRecptReport(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception 
{
logger.info("In generateRecptReport");          
        String p_company_logo=getServlet().getServletContext().getRealPath("/")+"reports/logo.bmp";
        String reportPath="/reports/MSSQLREPORTS/";
        String reportName="receiptMemoReport";          
        ReportsDAO reportdao = (ReportsDAO)DaoImplInstanceFactory.getDaoImplInstance(ReportsDAO.IDENTITY);
        logger.info("Implementation class: "+reportdao.getClass());
        reportName=reportdao.getReceiptReportName();
        if(CommonFunction.checkNull(reportName).trim().equalsIgnoreCase(""))
            reportName="receiptMemoReport";             

        Connection connectDatabase = ConnectionDAO.getConnection();     
        Map<Object,Object> hashMap = new HashMap<Object,Object>();
        hashMap.put("p_company_logo",p_company_logo);
        hashMap.put("IS_IGNORE_PAGINATION",true);
        try
        {
            InputStream reportStream = getServlet().getServletConfig().getServletContext().getResourceAsStream(reportPath+reportName+".jasper");
            JasperPrint jasperPrint = null; 
            PrintWriter out=response.getWriter();
            out.append("<head><script type='text/javascript' src='"+request.getContextPath()+"/js/report/report.js'></script></head>");
            out.append("<body onLoad='self.print();self.close()'></body>");     
            response.setContentType("text/html");       
            String htmlReportFileName=reportName+".html";
            JRHtmlExporter exporter = new JRHtmlExporter();     
            request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,jasperPrint);     
            exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER, out);
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN ,Boolean.FALSE);
            exporter.setParameter(JRHtmlExporterParameter.IGNORE_PAGE_MARGINS ,Boolean.TRUE); 
            exporter.setParameter(JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
            exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
            exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);
            exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML,"");
            exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter());
            float f1=1.2f;  
            exporter.setParameter(JRHtmlExporterParameter.ZOOM_RATIO ,f1);
            exporter.exportReport();                    
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally 
        {
            ConnectionDAO.closeConnection(connectDatabase, null);
            hashMap.clear();
        }
        return null;
    }