要使在客户端生成jasperView 的applet,<o:p></o:p>
<o:p></o:p>
注意:<o:p></o:p>
applet.jar, carnet.crt 都在 WebRoot 目录下<o:p></o:p>
applet.jar包括了 jasperreport.jar , poi.jar, jxl.jar, jfreechat.jar, antlr.jar , commons.jar ….<o:p></o:p>
可根据功能去掉一些jar, 为了方便, 我全部打包一下applet.jar里了<o:p></o:p>
如果仅有jasperreport.jar , 客户端的生成的jasperView 只能浏览报表内容。但是不能够导出, 保存.<o:p></o:p>
<o:p></o:p>
1) servlet ,返回 jasperPrint 的数据流<o:p></o:p>
resp.setContentType("application/octet-stream");<o:p></o:p>
try {<o:p></o:p>
ObjectOutputStream out = new ObjectOutputStream(resp.getOutputStream());<o:p></o:p>
out.writeObject(ReportFactory.getReport(jasperNameValue, map));<o:p></o:p>
out.flush();<o:p></o:p>
out.close();<o:p></o:p>
} catch(Exception ex) {<o:p></o:p>
}<o:p></o:p>
// 将jasperPrint以流方式发送到客户端 ,让 applet接收<o:p></o:p>
<o:p></o:p>
2) test1.jsp 调用报表的servlet 链接<o:p></o:p>
<applet code= "ViewReport.class" archive ="applet.jar" width= "600" height ="500"><o:p></o:p>
<name ="REPORT_URL" value= "<a href="http://www2.blogger.com/jaspername=" date1="2006-09-01&date2=" cancelcount="1&guaranteeNo=">http://192.168.0.1:80/test/viewReport/?jasperName=WeeklyIssuanceReport1&date1=2006-09-01&date2=2006-12-01&cancelCount=1&guaranteeNo=2 </a>"><o:p></o:p>
</ applet><o:p></o:p>
// 其中 applet.jar 的类有很多, 下面有说明<o:p></o:p>
ViewReport.class 是用在applet.jar 的根下的<o:p></o:p>
<o:p></o:p>
3) Applet调用 JasperViewer.viewReport(jprint, false);<o:p></o:p>
public class ViewReport extends JApplet {<o:p></o:p>
<o:p></o:p>
public ViewReport() throws HeadlessException {<o:p></o:p>
super();<o:p></o:p>
// TODO Auto-generated constructor stub<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public void init() {<o:p></o:p>
try {<o:p></o:p>
URL url = new URL(this.getParameter("REPORT_URL"));<o:p></o:p>
JasperPrint jprint = (JasperPrint) JRLoader.loadObject(url);<o:p></o:p>
JasperViewer.viewReport(jprint, false);<o:p></o:p>
} catch(Exception ex) {<o:p></o:p>
JOptionPane.showMessageDialog(this, ex.getMessage());<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public void start() {<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
4) 给Applet.jar进行数字签名<o:p></o:p>
1.Generate key: 于 command line下输入 keyname 是你自己设的。这里叫javaworld 。<o:p></o:p>
1<o:p></o:p>
keytool -genkey -keyalg rsa -alias carnet<o:p></o:p>
填入你的资讯。 此时产生的是key 而已。 2.Export key: 于 command line下输入 keyname 是你刚才设的。叫javaworld 。 anyname 是你自己设要产出的 cert。我都取和 keyname 一样。<o:p></o:p>
1<o:p></o:p>
keytool -export -alias carnet -file carnet.crt<o:p></o:p>
3.key 已成为档案。 4Create JAR: 于command line 下输入 applet 名称看你自己要 jar谁…<o:p></o:p>
1<o:p></o:p>
jar cvf jarname.jar ViewReport.class<o:p></o:p>
如果是目录里所有的档案的话 例如你的东西全在classes 目录下, 可先进入此目录,再键入<o:p></o:p>
1<o:p></o:p>
jar cvf xxx.jar .<o:p></o:p>
那一" 点" 记得要加…代表以下所有档案。 5.sign jar: 于 command line 下输入 keyname 就之前输入的那个名字。carnet 。<o:p></o:p>
1<o:p></o:p>
jarsigner jarname.jar carnet<o:p></o:p>
6. 密码不要忘了耶。 7. 每次 compile classes后,要再编成 jar 一次,再singer 一次。<o:p></o:p>
<o:p></o:p>
先用 cmd 命令去到 applet的目录下, 动行上面的命令,就可以生成经过签名的jar 包了,<o:p></o:p>
同时生成carnet.crt<o:p></o:p>
<o:p></o:p>
5) 打开 </a href="http://192.168.0.161/test/test1.jsp">http://192.168.0.161/test/test1.jsp</a><o:p></o:p>
这样, 就可以提示是否信任数字签名,然后点 "YES" 就可以了<o:p></o:p>
以测试, 别的机也可以看到.
Jasperview 的applet中加超链接<o:p></o:p>
<o:p></o:p>
项目需求:<o:p></o:p>
在客户端弹出jasperviwer的applet,使得客户端可以随意导出为多种格式,同意也省了代码的开发,,直接用applet就行了,在客户端弹出jasperviewer在我的旧文章中有说明,<o:p></o:p>
现在说的是如果在jasperviwer中弹出另一个applet的jasperviwer,因为看源码,如果HyperLink是REFERENCE,那么是什么也不做的,,现改为点击REFERENCE的HyperLink后,弹出新的applet.<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
在用 ireport设计报表的时候, 选中texf-field的属性,然后输入 HyperLink的相关内容,<o:p></o:p>
<o:p></o:p>
但是在用applet的jasperview是,报表中的链接如果都是外部链接的话,都没反应,,这是因为:<o:p></o:p>
<o:p></o:p>
net.sf.jasperreports.view. JRViewer<o:p></o:p>
public void gotoHyperlink(JRPrintHyperlink hyperlink)<o:p></o:p>
switch(hyperlink.getHyperlinkType()){<o:p></o:p>
case JRHyperlink.HYPERLINK_TYPE_REFERENCE :<o:p></o:p>
{ // 这里并没有对外部链接进行处理<o:p></o:p>
if (hyperlinkListeners != null && hyperlinkListeners.size() > 1){<o:p></o:p>
System.out.println("Hyperlink reference : " + hyperlink.getHyperlinkReference());<o:p></o:p>
System.out.println("Implement your own JRHyperlinkListener to manage this type of event.");<o:p></o:p>
}<o:p></o:p>
break;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
所以要修改源码,我的做法是:<o:p></o:p>
<o:p></o:p>
重新写一个 jasperViewe1和一个jrViewer1<o:p></o:p>
放在 net.sf.jasperreports.view包中,,<o:p></o:p>
jrViewer1的 gotoHyperLink函数体为:<o:p></o:p>
public void gotoHyperlink(JRPrintHyperlink hyperlink) {<o:p></o:p>
super.gotoHyperlink(hyperlink);<o:p></o:p>
if(hyperlink.getHyperlinkType() == JRHyperlink.HYPERLINK_TYPE_REFERENCE) {<o:p></o:p>
//log.info("Hyperlink reference : " + hyperlink.getHyperlinkReference());<o:p></o:p>
try {<o:p></o:p>
JasperPrint jprint = (JasperPrint) JRLoader.loadObject(new URL(hyperlink.getHyperlinkReference()));<o:p></o:p>
JasperViewer.viewReport(jprint, false);<o:p></o:p>
//通过这句话, 在jasperView的applet上点击链接时,将会弹出一个新的applet窗口,显示别的内容<o:p></o:p>
} catch(Exception ex) {<o:p></o:p>
JOptionPane.showMessageDialog(this, ex.getMessage());<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
JasperViewer1 代码, 因为 JasperViewer中的代码的 JRViewer 是不能set进去的,,所以必须重一写一个JRViewer1类,, JRViewer对象改为 jrView1对象… 这样才行,,<o:p></o:p>
<o:p></o:p>
然后在applet初始的时候调JasperViewer1来弹出JasperViewer ,,,<o:p></o:p>
<o:p></o:p>
用以上方法,就可以实现在 jasperViewer的applet报表中弹出别的报表,即可以在报表中加外部报表的链接了 <o:p></o:p>
相关推荐
ireport在进行应用开发时,常用的函数:比如数据为空时,不让其显示或者直接显示为“0”;男女以及性别展示(比如1显示“男”,2显示“女”)等函数写法,全部都整理到此文档中了。
ireport教程和iReport使用说明,学习报表开发,免费的开源报表工具。
编译iReport: 9 基本的配置: 9 创建JDBC连接: 12 第一个报表: 13 命令行选项: 17 3 JasperReports基础概念 17 JasperReports 17 报表生命周期: 18 Jrxml源代码和jasper文件: 18 数据源和打印格式: 22 版本...
iReport+jasperReport之客户端打印 数字签名
IREPORT使用JAVABEAN作为报表数据源IREPORT使用JAVABEAN作为报表数据源IREPORT使用JAVABEAN作为报表数据源
ireport使用自定义脚本,使用scriplet
ireport使用
报表iReport使用教程 报表iReport使用教程 报表iReport使用教程 报表iReport使用教程
iReport使用教程
NULL 博文链接:https://yzhp2z.iteye.com/blog/1763955
ireport使用javabean做数据源
ireport实现普通报表、交叉报表、分组报表,数据源使用jdbc方式
自己测试的,主要是截图,清晰明了,没有过多的汉字解释,简单易懂
介绍一份轻松易懂的ireport文档给大家.快速掌握ireport报表
使用iReport和Jasperreport配合实现各种报表
iReport使用JavaBean做数据源,可解决报表无法重复利用,以及Hibernate+Struts中无法在报表中使用Hibernate的数据库连接的问题。
编译iReport: 9 基本的配置: 9 创建JDBC连接: 12 第一个报表: 13 命令行选项: 17 3 JasperReports基础概念 17 JasperReports 17 报表生命周期: 18 Jrxml源代码和jasper文件: 18 数据源和打印格式: 22 版本...
ireport 水晶报表设计器中的有关变量简单的计算公式