- 浏览: 88062 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
medicine:
总结不错,回去验证一下
Ibatis中#和$的区别 -
Hunk_Gou:
有帮助到,Thx
关于POI与JXL的比较 -
shawnfree:
javacsv读取csv好吗?那个更好。
Java读取csv文件 -
SunComing:
感謝分享, 很清楚也指多兩者的優缺點, 謝謝
关于POI与JXL的比较 -
fulianglove:
非常好!谢谢!
Java gc
最近因为项目需要,要在applet上显示报表,一下子傻了眼,applet已经N年没用过了,上网找了好久,找到了JasperReport-applet.以下就来说说如何在applet上显示报表.
首先需要下载jasperReport的jar包.可以去他的官网上下.目前最新版本为2.0.5.
新建工程,在WebRoot下新建文件夹applets,当然这名字随意建.不过后面有配置地方需要用的到.在jasperreport包内demo/samples/webapp/applets下,把EmbeddedViewerApplet.class,JRViewerSimple.class,以及jasperreport-2.0.5-applet.jar拷入自己项目中建的applets文件夹下.注意,刚打开那个jar包里是没有class文件,只有java文件,需要用ant build下.你也可以拷出java文件,然后编译.
OK,以上一些基本操作已经完成.下面就要一些编程操作了.
写个处理的servlet, 代码如下:
PdfViaAppletServlet,
OK,基本上快完成了,上面的MyDataSource是自己定义,代码如下:
MyDataSource,
最后就是显示的页面了:当然这里applet标签需要用object标签替换:
view.html,
大致流程在后台得到MyDataSource,放入session.跳转至view.html.出报表.至于一些细节方面,如果有看不懂的地方可以问我.
备注:关于放入applets文件夹内的2个class最好不要有package.如果有的话路径方面有的小麻烦,经常会报找不到某某类.
首先需要下载jasperReport的jar包.可以去他的官网上下.目前最新版本为2.0.5.
新建工程,在WebRoot下新建文件夹applets,当然这名字随意建.不过后面有配置地方需要用的到.在jasperreport包内demo/samples/webapp/applets下,把EmbeddedViewerApplet.class,JRViewerSimple.class,以及jasperreport-2.0.5-applet.jar拷入自己项目中建的applets文件夹下.注意,刚打开那个jar包里是没有class文件,只有java文件,需要用ant build下.你也可以拷出java文件,然后编译.
OK,以上一些基本操作已经完成.下面就要一些编程操作了.
写个处理的servlet, 代码如下:
PdfViaAppletServlet,
public class PdfViaAppletServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ServletContext context = this.getServletConfig().getServletContext(); if (request.getSession().getAttribute(MyDataSource.REPORT_DATASOURCE) == null) { showNoData(response); return; } MyDataSource myDataSource = (MyDataSource) request.getSession() .getAttribute(MyDataSource.REPORT_DATASOURCE); File reportFile = new File(context.getRealPath("/WEB-INF/reports/" + myDataSource.getFilename() + ".jasper")); if (!reportFile.exists()) throw new JRRuntimeException( "File " + myDataSource.getFilename() + ".jasper not found. The report design must be compiled first."); myDataSource.getParameters().put("BaseDir", reportFile.getParentFile()); if (myDataSource.getFields() == null || myDataSource.getFields().size() == 0) { showNoData(response); return; } // byte[] bytes = null; JasperPrint jasperPrint = null; try { // log.debug(" ===== start to generate pdf file ===== "); // bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), // myDataSource.getParameters(), myDataSource); jasperPrint = JasperFillManager. fillReport(reportFile.getPath(), myDataSource.getParameters(), myDataSource); // log.debug(" ===== end to generate pdf file ===== "); } catch (JRException e) { showException(response, e); return; } if (jasperPrint != null) { response.setContentType("application/octet-stream"); // response.setContentLength(bytes.length); ServletOutputStream outputStream = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outputStream); // outputStream.write(bytes, 0, bytes.length); oos.writeObject(jasperPrint); oos.flush(); oos.close(); outputStream.flush(); outputStream.close(); request.getSession() .removeAttribute(MyDataSource.REPORT_DATASOURCE); } else { showNoData(response); } } //--------- private method -------------- private void showException(HttpServletResponse response, JRException e) throws IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>InHouse2 - Reports</title>"); out .println("<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/default.css\""); out.println("</head>"); out.println("<body>"); out .println("<span class=\"bnew\">InHouse2Report encountered this error :</span>"); out.println("<pre>"); e.printStackTrace(out); out.println("</pre>"); out.println("</body>"); out.println("</html>"); } private void showNoData(HttpServletResponse response) throws IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>InHouse2 - Reports</title>"); out .println("<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/default.css\""); out.println("</head>"); out.println("<body>"); out.println("No data show"); out.println("</body>"); out.println("</html>"); } }
OK,基本上快完成了,上面的MyDataSource是自己定义,代码如下:
MyDataSource,
public class MyDataSource implements JRDataSource { public final static String REPORT_DATASOURCE = "report_datasource"; private int index = -1; private String filename; private Map parameters; private List fields; public MyDataSource(String filename, Map parameters, List fields) { this.parameters = parameters; this.fields = fields; this.filename = filename; } public boolean next() throws JRException { index++; return (index < fields.size()); } public Object getFieldValue(JRField field) throws JRException { Map record = (Map) fields.get(index); return record.get(field.getName()); } public Map getParameters() { return parameters; } public String getFilename() { return filename; } public List getFields() { return fields; } }
最后就是显示的页面了:当然这里applet标签需要用object标签替换:
view.html,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>view.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH = 100% HEIGHT = "100%" codebase="http://java.sun.com/update/1.4.2/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"> <PARAM NAME = CODE VALUE = "EmbeddedViewerApplet.class" > <PARAM NAME = CODEBASE VALUE = "applets" > <PARAM NAME = ARCHIVE VALUE = "jasperreports-2.0.5-applet.jar,jasperreports-2.0.5.jar" > <PARAM NAME = "type" VALUE ="application/x-java-applet;version=1.2.2"> <PARAM NAME = "scriptable" VALUE ="false"> <PARAM NAME = "REPORT_URL" VALUE ="../PdfViaAppletServlet"> <COMMENT> <EMBED type = "application/x-java-applet;version=1.4" CODE = "EmbeddedViewerApplet.class" CODEBASE = "applets" ARCHIVE = "jasperreports-2.0.5-applet.jar,jasperreports-2.0.5.jar" scriptable = "false" REPORT_URL = "../PdfViaAppletServlet" pluginspage = "http://java.sun.com/products/plugin/index.html#download" width="100%" height="100%"> <NOEMBED> alt="Your browser understands the <APPLET> tag but isn't running the applet, for some reason." Your browser is completely ignoring the <APPLET> tag! </NOEMBED> </EMBED> </COMMENT> </OBJECT> </body> </html>
大致流程在后台得到MyDataSource,放入session.跳转至view.html.出报表.至于一些细节方面,如果有看不懂的地方可以问我.
备注:关于放入applets文件夹内的2个class最好不要有package.如果有的话路径方面有的小麻烦,经常会报找不到某某类.
评论
4 楼
HJXia
2008-05-15
这个打印的份数默认就是1啊,不需要设置的哦.
3 楼
kasen
2008-05-06
用这个方式实现打印,能不能控制打印份数的设定,我现在一直想固定为1。但是找了几天没有找到怎么设置,请帮帮忙。谢谢了。
2 楼
HJXia
2008-04-14
你说的似乎应该是EmbeddedViewerApplet这个类,这个类是jasperreport自带的,具体路径文章中有说.你可以去看看他的源代码.
1 楼
sonichui
2008-04-11
你在Applet中是怎样处理PdfViaAppletServlet发回的JasperPrint对象,并显示出报表,我对这个比较有兴趣,可否透露一点代码
发表评论
-
LOG4J配置详解
2011-01-20 10:00 795第一步:加入log4j-1.2.8.j ... -
Resin特性
2011-01-13 17:59 1084Resin的特点 Resin提供了最快的jsp/servle ... -
oracle排序方法
2010-10-13 15:01 1347Oracle9i之前,中文是按照二进制编码进行排序的。在ora ... -
volatile使用
2010-09-08 11:20 654Java™ 语言包含两种内 ... -
DPF项目积累
2010-09-08 08:47 20221. JSTL标签导入 <%@taglib prefix ... -
PrintWriter与ServletOutputStream的区别
2010-08-31 14:57 1511PrintWriter 与 ServletOutputStre ... -
JAVA中volatile的意义
2010-08-16 11:10 848我们知道,在Java中设置变量值的操作,除了long和doub ... -
eclipse常用快捷键
2010-08-12 13:40 748Eclipse 常用快捷键 Eclipse ... -
分页封装
2010-08-10 11:03 929PagesFactory: /** * 分页 ... -
CachedRowSet Invalid scale size. Cannot be less than zero
2010-08-10 10:17 1485在项目中有用到CachedRowSet这个类 在底层封装的方法 ... -
JAVA反射小例子
2010-08-10 10:04 830package com.xhj.test; impo ... -
Java gc
2008-08-07 17:28 17721.JVM的gc概述 gc即 ... -
Java读取csv文件
2008-06-02 16:03 8330首先在http://ostermiller.org/utils ... -
HttpClient的学习
2008-01-16 11:50 1802HttpClient简介 HttpClient是Ap ... -
关于POI与JXL的比较
2008-01-09 12:01 12720POI为apache公司的一个子项目,主要是提供一组操作win ... -
Java的通用方法
2007-12-03 18:09 947public void method(Object ... ... -
JavaMail的实现
2007-12-03 17:58 1377今天研究了一下JavaMail,总算对它有了点新的认识. 需要 ...
相关推荐
1. **引入依赖**:首先,在项目中引入JasperReports Applet 5.1.0的相关库文件,包括jasperreports-applet-5.1.0.jar。 2. **创建报表**:使用JasperSoft Studio或类似的工具设计报表模板,并将其编译为.JRXML或....
在"jasperreport+applet客户端打印demo"中,我们探讨的是如何利用JasperReport结合Java Applet技术实现客户端的打印功能。 首先,JasperReport提供了丰富的模板设计功能,通过JRXML文件可以定义报告的布局、样式、...
### iReport + JasperReport 客户端打印与数字签名详解 #### 一、概述 iReport 是一个用于设计 JasperReports 报告模板的图形界面工具,而 JasperReports 则是一款非常流行的 Java 报告工具,它能够从各种数据源...
使用ireport subreort 实现jasperreport主从关系表格的制作和输出(xls,pdf) 版本号3.7.4 可直接导入到eclipse:file>import>general>Existing project>archive...
标题中的“jasperreport报表模板预览 applet与servlet通信”揭示了本文将要讨论的重点,即如何在Java环境中使用JasperReport库创建报表模板,并通过Applet和Servlet进行数据交互来实现预览功能。JasperReport是一个...
JasperReport Struts2 web 整合所需完整jar ant-1.7.1.jar antlr-2.7.5.jar asm.jar bsh-2.0b4.jar cglib-2.1.jar commons-beanutils-1.7.0.jar commons-beanutils-1.7.jar commons-collections-2.1.jar commons-...
在本主题中,我们将探讨如何利用JasperReport进行客户端打印,特别是通过Applet的方式。 首先,我们需要理解JasperReport的核心概念。JasperReport允许用户使用JRXML文件设计报告模板,这个模板包含了布局、数据源...
3. **jasperreports-3.0.1-applet.jar**:此文件提供了JasperReport的Applet支持,允许在Web浏览器中直接运行报表。通过Java Applet,用户可以在网页上查看和交互报表,这对于需要在线展示和操作报表的应用场景非常...
在Java Web Start或嵌入到HTML中的Applet中,我们可以加载JasperReport生成的报表,并通过Applet调用系统的打印服务,从而实现在客户端进行无服务器打印。然而,需要注意的是,由于安全限制和浏览器兼容性问题,Java...
基于jasperreport开发的flash查看器ver4.0
4. **jasperreports-applet-4.1.1.jar**:这个库是JasperReport的Applet版本,使得报告可以在Web浏览器中以Java小应用程序的形式运行。用户可以在网页上直接查看和打印报表,增强了报表的交互性和可访问性。 5. **...
### Java Applet + JasperReport 实现Web端打印 #### 背景介绍 在Web开发领域,特别是企业级应用中,精确打印与批量打印是非常重要的功能之一。这不仅关乎用户体验,还涉及到业务流程的顺利执行。传统的Web打印...
3. jasperreports-3.6.0-applet.jar:此文件是JasperReport的Applet版本,用于在Web浏览器中直接运行报表。通过Applet,用户可以在网页上查看和交互报表,提升了报表的可访问性。 4. release.notes-3.6.0.txt:这是...
4. **嵌入式和独立使用:** 除了作为Java应用的一部分运行,jasperReport还可以通过applet在Web环境中运行,或者通过JasperServer等服务器产品进行分布式报表服务。 5. **Java Flow:** 这个特性允许报表在需要时按...
- **JasperReport本身的jar包**:位于\jasperreports-3.5.2\dist\目录下,主要包括`jasperreports-3.5.2.jar`、`jasperreports-3.5.2-applet.jar`、`jasperreports-3.5.2-javaflow.jar`。 - **JasperReport依赖的第...
jasperreports-5.2.0主要jar包,方便不方便到官网下载的人使用 ...里面包含:jasperreports-5.2.0.jar,jasperreports-applet-5.2.0.jar,jasperreports-fonts-5.2.0.jar,jasperreports-javaflow-5.2.0.jar
- 将Jasperreport的相关JAR文件(`jasperreports-0.6.2.jar`, `jasperreports-0.6.2-applet.jar`)放置于`C:\jasperreports`目录,并将这两个JAR文件的路径加入到系统的classpath中。 3. **iTextAsian和JDK tools....
解压后得到 `jasperreport` 目录,其中包含源代码、依赖库和示例项目。 2. **添加依赖** 将下载的 JAR 文件添加到 Java 应用程序的 CLASSPATH 中。如果是基于 Maven 或 Gradle 的项目,则可以通过添加对应的依赖...