`
阅读更多
          jasperReport客户端采用applet,applet和activeX插件的区别大家搜一下,有一堆东西可以借鉴,下载jasperreports-3.0.0,在相应的sample OR demo(记得不清了)中可以找到jasperReport 实现的客户端打印demo,下来就来分析下具体实现。
  新建一print.js文件:
function loadApplet(applet_URL) {
    
var URL = applet_URL + "/applets/jre-1_5_0_18-windows-i586-p.exe";
    document.write('
<OBJECT id="myApplet" name="myApplet"');
    document.write('classid
="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH="0" HEIGHT="0" MAYSCRIPT name="myApplet"');
    document.write('codebase
='+ URL +'>');
    document.write('
<PARAM NAME="CODE" VALUE="org.bulktree.report.print.applet.PrinterApplet" />');
    document.write('
<PARAM NAME="CODEBASE" VALUE="../applets" />');
    document.write('
<PARAM NAME="ARCHIVE" VALUE="jasperreports-3.0.1-applet.jar" />');
    document.write('
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.5.0" />');
    document.write('
<PARAM NAME="scriptable" VALUE="false" />');
    document.write('
<PARAM NAME="REPORT_URL" VALUE="../report.view">');
    document.write('no support java');
    document.write('
<comment>');
    document.write('
<embed type="application/x-java-applet;version=1.5.0"');
    document.write('CODE
="org.bulktree.report.print.applet.PrinterApplet"');
    document.write('JAVA_CODEBASE
="applets" ARCHIVE="jasperreports-3.0.1-applet.jar"');
    document.write('scriptable
=false');
    document.write('pluginspage
='+ URL +'>');
    document.write('
<noembed></noembed>');
    document.write('
</embed>');
    document.write('
</comment>');
    document.write('
</OBJECT>');
}
     URL为一个固定的路径,是为了下载/applets/jre-1_5_0_18-windows-i586-p.exe(JRE运行环境)而存在的,也可以使用外网从sun公司网站下载,
     REPORT_URL 为applet所要访问的地址,在工程的web.xml配置/report.view如下servlet即可,此servet可接收applet参数,生成jasperPrint对象,并传递到客户端applet中进行打印或者预览。
  servlet配置如下:
<servlet>
                
<servlet-name>ReportServlet</servlet-name>
        
<servlet-class>org.bulktree.report.print.applet.ReportServlet</servlet-class>
    
</servlet>
<servlet-mapping>
        
<servlet-name>ReportServlet</servlet-name>
        
<url-pattern>/report.view</url-pattern>
    
</servlet-mapping>

ReportServlet核心代码就是根据业务找到对应的模板文件填充数据生成jasperPrint对象,产生的jasperPrint对象以对象流的形式发送给客户端,核心代码如下:
// 生成jasperPrint对象
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
                    mapParam, 
new JREmptyDataSource());

//组装流
response.setContentType("application/octet-stream");
                response.setBufferSize(
8986000);
                ServletOutputStream outStream 
= response.getOutputStream();
                ObjectOutputStream oos 
= new ObjectOutputStream(outStream);
                oos.writeObject(jasperPrint);
当然,客户端的applet使用如下:
/**//*
                     * applet与Servlet交互 URL传递页面传来的参数请求服务器Servlet
                     * 把applet传递的参数追加到servlet中 2008-10-14 laoshulin
                     
*/


                    url 
= new URL(getCodeBase(), requestUrl + "?printView=true"
                            
+ paraStr);

                    
if (url == null{
                        JOptionPane.showMessageDialog(
this,
                                
"Source URL not specified");
                    }
 else {
                        InputStream in 
= url.openStream();
                        ObjectInputStream objIn 
= new ObjectInputStream(in);
                        Object obj 
= objIn.readObject();
                        
if (obj instanceof JasperPrint) {

                        }
 else {
                            JOptionPane.showMessageDialog(
this, obj.toString());
                            
return;
                        }


                        
if (jasperPrint == null{
                            
// 根据Servlet返回的URL(ObjectStream)产生JasperPrint对象
                            jasperPrint = (JasperPrint) obj;

                        }

                        
// 拦截出现空报表问题
                        if (jasperPrint != null
                                
&& jasperPrint.getPages().size() > 0{
                            
/**//*
                             * 调用JasperReport.jar中JasperViewer绘制报表Frame
                             * JasperViewer继承自JFrame,采用setDefaultCloseOperation响应关闭窗口事件
                             
*/


                            ViewerFrame viewerFrame 
= new ViewerFrame(this
                                    .getAppletContext(), jasperPrint,isShowPrintButton);
                            
                            viewerFrame.setVisible(
true);
                            
//viewerFrame.show();

                            
// JasperViewer viewer = new
                            
// JasperViewer(jasperPrint);
                            
// viewer.setVisible(true);
                            
// viewer.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
                            
// 如果请求为空弹出对话框予以提示
                        }
 else {
                            JOptionPane
                                    .showMessageDialog(
this,
                                            
"Please check Your Report SQL! It resulted in empty Report! ");
                            
return;
                        }

                    }

其中requestUrl为applet配置中的REPORT_URL,现实中可以采用此种方式传递参数到applet中,下篇文章会介绍更合适的业务数据传递,?printView=true表示,传递printView参数对应的值为true,用来预览使用。剩下的工作就是怎么按照自己的要求打印和预览了。
 jasperReport为我们提供了打印和预览现成的方法:
// 打印报表
                                    JasperPrintManager
                                            .printReport(print, 
false);

/**//*  预览报表
                             * 调用JasperReport.jar中JasperViewer绘制报表Frame
                             * JasperViewer继承自JFrame,采用setDefaultCloseOperation响应关闭窗口事件
                             
*/

                            ViewerFrame viewerFrame 
= new ViewerFrame(this
                                    .getAppletContext(), jasperPrint);
                            viewerFrame.setVisible(
true);

最后记着释放对象哦,浏览器会受不了得:
url = null;
            jasperPrint 
= null;
OK,客户端就出现了,参照demo没有什么难度,下一篇我会介绍一下具体的细节,及套打的实现。
分享到:
评论

相关推荐

    iReport+jasperReport之客户端打印 ----数字签名

    ### iReport + JasperReport 客户端打印与数字签名详解 #### 一、概述 iReport 是一个用于设计 JasperReports 报告模板的图形界面工具,而 JasperReports 则是一款非常流行的 Java 报告工具,它能够从各种数据源...

    jasperreport+applet客户端打印demo

    总的来说,"jasperreport+applet客户端打印demo"展示了如何结合JasperReport的强大报表生成能力和Java Applet的本地交互能力,实现一个灵活且安全的客户端打印解决方案。虽然Applet可能不再是首选技术,但其背后的...

    jasperReport客户端打印。

    因此,虽然Applet在过去的JasperReport客户端打印方案中很常见,但现在可能需要考虑其他替代方案,如使用Java Web Start或Web服务来实现客户端打印。 总之,JasperReport结合Applet提供了在客户端进行打印的功能,...

    ireport+jsp基于jasperReport 实现导出报表至web页面

    标题中的“ireport+jsp基于jasperReport 实现导出报表至web页面”是指使用iReport工具和JasperReport库,结合JavaServer Pages (JSP) 技术,来创建和展示动态报表,并能将这些报表导出到Web页面上供用户查看。...

    ireport+jsperreport操作文档

    **永泰决策分析系统——ireport与jasperreport操作指南** **1. 引言** 本操作手册旨在为用户详细解读如何使用ireport与jasperreport工具进行报表设计与生成,以便在永泰决策分析系统中实现高效的数据可视化和业务...

    jasperreports-5.6.0+applet实现客户端打印所需的jar包

    在本场景中,我们关注的是JasperReports 5.6.0版本与Java Applet结合来实现客户端打印的功能。Applet是Java的一个古老特性,允许在Web浏览器中运行小型Java程序,为用户提供交互性。 首先,`jasperreports-5.6.0`是...

    Jasperreport 客户端打印例子

    **JasperReport客户端打印详解** JasperReport是一款强大的开源报表工具,它允许开发者设计美观、复杂的报告,并在各种应用程序中嵌入和展示这些报告。在Java应用中,JasperReport通常用于生成PDF、HTML、Excel等...

    SpringBoot+iReport打印(单张和多张)报表(包含模设计板样板与代码实现)案例

    本案例是SpringBoot结合iReport做的打印,直接在浏览器上面显示PDF,建议在Eclipse+Maven上部署运行,启动方式与SpringBoot启动方式一样,特别注意:如果你使用的SpringBoot版本比较新,相关jar包会有所不同。

    JasperReports -- 客户端打印(WEB网页打印)

    **JasperReports -- 客户端打印(WEB网页打印)** JasperReports 是一个功能强大的开源报告生成库,广泛应用于Java应用程序中,用于创建复杂的报表和图表。它支持多种数据源,包括数据库查询、XML、CSV等,并且可以...

    ireport+springMVC 导出pdf excel 子报表

    在ireport中,我们可以定义两种不同类型的导出格式,通过设置jasperReport的导出参数,使得用户可以选择导出为PDF或Excel格式。 4. **子报表**: 子报表是报表设计中的一个重要概念,它允许在一个报表中嵌套另一个...

    MyEclipse iReport JasperReport Struts2.doc

    本文将介绍如何在MyEclipse中使用iReport和JasperReport结合Struts2框架来开发报表。MyEclipse是一款强大的Java集成开发环境,而iReport是一款基于JasperReport的报表设计工具,Struts2则是一个流行的Java web应用...

    JasperReport+Servlet Web应用之:打印预览

    **JasperReport与Servlet在Web应用中的打印预览** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序、Web应用甚至独立的Java应用程序中创建复杂的报告。Servlet是Java Web开发中的一个重要组件,...

    JasperReport+iReport报表工具详细开发手册

    ### JasperReport+iReport报表工具详细开发手册 #### 1. 简介 JasperReport是一款功能强大的报表引擎,能够支持多种数据源并输出不同格式的报表,如PDF、HTML、Excel等。它由Java语言编写,适用于各种Java应用程序...

    JasperReport+iReport整合的Web报表开发

    ### JasperReport+iReport整合的Web报表开发 #### 1. JasperReport简介 JasperReport是一款功能强大且灵活的报表生成工具,它支持多种输出格式,包括PDF、HTML、XML、Excel(通过POI或JExcelAPI实现)和Rtf(通过...

    jasperreport 生成pdf实现下载与打印

    标题中的“jasperreport生成pdf实现下载与打印”是指使用JasperReports库来创建PDF报告,并提供下载和打印功能。JasperReports是一个开源的Java报表工具,它允许开发者设计、生成和导出各种类型的报表,包括PDF、...

    自己搜集的jasperreport和ireport的一些资源

    【jasperreport&ireport】是两个紧密关联的开源报告工具,主要用于生成复杂的企业级报表。JasperReport是一个Java库,允许开发人员在各种应用程序中嵌入报告功能,而iReport则是JasperReport的设计工具,提供了图形...

    japser实现批量打印

    本实例将详细介绍如何利用iReport和JasperReports来实现批量打印的功能。 首先,我们需要理解JasperReports的基本工作流程。JasperReport的设计是基于一个名为`.jrxml`的XML文件,这个文件包含了报表的所有布局和...

    国产报表Ireport,pdf打印输出中文

    `JasperReport+iReport简单使用总结.docx`文档很可能是对这个过程的详细说明,包括如何创建报表模板,设置编码,选择字体以及如何在Java代码中调用报表引擎进行PDF生成。 5. **Ireport工具使用**:`iReport-5.6.0-...

    ireport与java 桌面应用,web应用

    标题中的“ireport与java 桌面应用,web应用”揭示了本次讨论的核心主题,即如何使用ireport工具在Java环境下开发桌面应用程序和Web应用程序的报表功能。ireport是JasperReports库的一个图形化设计工具,允许开发者...

Global site tag (gtag.js) - Google Analytics