ireport打印问题

dever2011 2012-10-08 04:08:49
我用jetty跑的项目,在我本地,想做个用ireport打印功能,用的是Jaspersoft iReport Designer 4.5.1
项目中用的也是这个Jar包,在点击打印按钮额时候,跳转到controller里,向request里set相关参数,然后跳转到打印页面,页面代码

<%@page language="java" contentType="text/html; charset=UTF-8"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="java.net.URLDecoder"%>
<%@ include file="/common/taglibs.jsp"%>
<%
String params="",reportFile;
String caseNo =(String) request.getAttribute("caseNo");
String caseApplicant =(String) request.getAttribute("caseApplicant");
String caseType =(String) request.getAttribute("caseType");
String caseStartDateBegin =(String) request.getAttribute("caseStartDateBegin");
String caseStartDateEnd =(String) request.getAttribute("caseStartDateEnd");
String surplusDays = (String)request.getAttribute("surplusDays");
String caseEndDateBegin =(String) request.getAttribute("caseEndDateBegin");
String caseEndDateEnd =(String) request.getAttribute("caseEndDateEnd");
String caseStatus =(String) request.getAttribute("caseStatus");
String code =(String) request.getAttribute("code");
String chtype =(String) request.getAttribute("chtype");

reportFile ="/report/reportFiles/bangjiantongji.jasper";
params="method=printReport&reportFile="+reportFile+"&caseNo="+caseNo+"&caseApplicant="+URLEncoder.encode(caseApplicant,"utf-8")+"&caseType="+URLEncoder.encode(caseType,"utf-8")+"&caseStartDateBegin="+caseStartDateBegin
+"&caseStartDateEnd="+caseStartDateEnd+"&surplusDays="+surplusDays+"&caseEndDateBegin="+caseEndDateBegin+"&caseEndDateEnd="+caseEndDateEnd+"&caseStatus="+URLEncoder.encode(caseStatus,"utf-8")
+"&code="+URLEncoder.encode(code,"utf-8")+"&caseType="+URLEncoder.encode(chtype,"utf-8");
%>

<HTML>

<HEAD>

<TITLE></TITLE>

</HEAD>


<script lanuage="javascript">
<!--
function unLoadReportSession()
{
window.frm.action = "${ctx}/unloadSession/unloadSession.do?method=upload";
window.frm.submit();
}

function loadReport()
{
var sWidth=window.screen.width;
var sHeight=window.screen.height-30;
window.resizeTo(sWidth,sHeight);
window.moveTo(0,0);
}
//-->
</script>
<body onunload="unLoadReportSession();" onload="loadReport()"
leftmargin="0" topmargin="0" rightmargin="0">
<form id="frm" method="post">
</form>
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH = "100%" HEIGHT = "100%" codebase="${ctx }/j2re.exe#Version=5,0,0,5"><NOEMBED></NOEMBED>
<APPLET CODE = "EmbeddedViewerApplet.class" CODEBASE="${ctx }/applets" ARCHIVE = "jasperreports-applet-4.5.1.jar,commons-logging-1.1.1.jar,commons-collections-2.1.1.jar" WIDTH = "100%" HEIGHT = "100%"></XMP>
<PARAM NAME = CODE VALUE = "EmbeddedViewerApplet.class" >
<PARAM NAME = CODEBASE VALUE = "${ctx }/applets" >
<PARAM NAME = ARCHIVE VALUE = "jasperreports-applet-4.5.1.jar,commons-logging-1.1.1.jar,commons-collections-2.1.1.jar" >
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.5.0">
<PARAM NAME="scriptable" VALUE="false">
<PARAM NAME = "REPORT_URL" VALUE="${ctx }/jreport.do?<%=params%>">
</APPLET>

</body>
</HTML>
...全文
342 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishibi0625 2015-05-02
  • 打赏
  • 举报
回复
这个可能是设置的问题吧,你可以参考一下finereport的打印设置,总的来说我感觉用下来还是finereport在打印这一块做的不错,不管是产品,还是文档,都比较清晰明了。
dever2011 2012-10-08
  • 打赏
  • 举报
回复
但是打印的时候,老是报错,报错信息如下:
Java Plug-in 1.6.0_23
使用 JRE 版本 1.6.0_23-b05 Java HotSpot(TM) Client VM
用户主目录 = C:\Documents and Settings\Administrator
----------------------------------------------------
c: 清除控制台窗口
f: 终结在结束队列上的对象
g: 垃圾收集
h: 显示此帮助消息
l: 转储类载入程序列表
m: 打印内存使用
o: 触发日志记录
q: 隐藏控制台
r: 重新载入策略配置
s: 转储系统和部署属性
t: 转储线程列表
v: 转储线程堆栈
x: 清除类载入程序高速缓存
0-5: 设置跟踪级别为<n>
----------------------------------------------------
Exception in thread "thread applet-EmbeddedViewerApplet.class-1" java.lang.ClassFormatError: Incompatible magic value 218762506 in class file net/sf/jasperreports/view/save/JRPdfSaveContributor
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:157)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115)
at net.sf.jasperreports.view.JRViewer.initSaveContributors(JRViewer.java:456)
at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:302)
at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:241)
at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:220)
at JRViewerSimple.<init>(JRViewerSimple.java:42)
at EmbeddedViewerApplet.init(EmbeddedViewerApplet.java:69)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
网上查了,讲是编译的时候版本不兼容造成的...但是小弟真心不是熟悉这个,第一次接触...
请各位大侠帮忙解决...不胜感激....
dever2011 2012-10-08
  • 打赏
  • 举报
回复
,然后在跳转到jreport的这个controller里,代码如下:

/**
* 打印查询业务报表方法
*/
@RequestMapping(params = "method=printReport")
public String printReport(HttpServletRequest request, ModelMap model,
HttpServletResponse response){
//bangjiantongji.jasper//4.5版本的打印模板
//bangjiantongji1.jasper//老版本的打印模板
String reportFilePath = "/report/reportFiles/bangjiantongji.jasper";
Map parameters = new HashMap();

//获取用户信息
OperatorDetails loginUser = SpringSecurityUtils.getCurrentUser();

String userDept = loginUser.getUser().getDeptCodeTree(); //当前登录用户编号

String today = request.getParameter("today");//判断是否是从个人工作台进来的标识
Page<CaseBaseInfoFlow> pages = new Page<CaseBaseInfoFlow>(10);
String caseNo = request.getParameter("caseNo"); //办件编号
String caseApplicant = request.getParameter("caseApplicant");//申报人
String caseType = request.getParameter("caseType");//办件类型
String caseStartDateBegin = request.getParameter("caseStartDateBegin");//受理时间Begin
String caseStartDateEnd = request.getParameter("caseStartDateEnd");//受理时间End
String surplusDays = request.getParameter("surplusDays")==null?"-1":request.getParameter("surplusDays");//剩余天数
String caseEndDateBegin = request.getParameter("caseEndDateBegin");//受理时间Begin
String caseEndDateEnd = request.getParameter("caseEndDateEnd");//受理时间End
String caseStatus = request.getParameter("caseStatus")==null?"":request.getParameter("caseStatus");//办件状态
String code = request.getParameter("code")==null?"":request.getParameter("code"); //服务事项Code
String chType=request.getParameter("chtype"); //选择类型(dist:中心;dept:部门;user:事项)

CaseBaseInfoFlow caseFlow = new CaseBaseInfoFlow();
caseFlow.setCaseNo(caseNo);
caseFlow.setCaseApplicant(caseApplicant);
caseFlow.setCaseType(caseType);
caseFlow.setCaseStartDateBegin(caseStartDateBegin);
caseFlow.setCaseStartDateEnd(caseStartDateEnd);
caseFlow.setCaseEndDateBegin(caseEndDateBegin);
caseFlow.setCaseEndDateEnd(caseEndDateEnd);
//caseFlow.setServCode(servCode);
if(surplusDays=="-1"){
caseFlow.setSurplusDay(Integer.valueOf(-1));
}else{
caseFlow.setSurplusDay(Integer.valueOf(surplusDays));
}
if(caseStatus!=""){
caseFlow.setCaseStatus(caseStatus);
}
User user = loginUser.getUser();
StringBuffer sql = new StringBuffer();
sql.append("select row_number() over (order by c.id ) as xuhao, isNull(c.caseNo,'') caseNo,isNull(c.servName,'') servName,isNull(c.flowInstanceId,-1) flowInstanceId,c.servCode,c.servWarnDay,");
sql.append(" isNull(c.caseType,'') caseType,isNull(c.caseStatus,'') caseStatus,isNull(c.caseApplicant,'') caseApplicant,isNull(c.deptName,'') deptName,");
sql.append(" isNull(c.receiverName,'') receiverName,isNull(c.receiverName,'') processUser,");
sql.append(" isNull(convert(varchar(10),c.caseStartDate,120),'') caseStartDate,");
sql.append(" isNull(convert(varchar(10),c.casePromiseDate,120),'') casePromiseDate");
sql.append(" from t_sp_caseBaseInfo c where 1=1 ");

if(StringUtils.isNotBlank(userDept)){//当前登录人的查询权限(可以查询那些部门信息)
String[] userDepts = userDept.split(",");
String userDeptes = "";
for (int i =0;i<userDepts.length;i++) {
userDeptes += "'"+userDepts[i]+"',";
}
sql.append(" and c.deptCode in(" + userDeptes.substring(0, userDeptes.length()-1) + ")");
}
if(today!=null){
if("accept".equals(today)){
sql.append(" and DateDiff(day,c.casestartdate,getdate())=0 and c.deptCode ='"+user.getDeptCode()+"' and c.acceptPeople='"+user.getUserName()+"' and c.caseFrom in('窗口受理','网上申报') ");
}
if("finish".equals(today)){
sql.append(" and c.caseStatus in('许可','不予许可','退件','补正不来','已发证') and DateDiff(day,c.caseEndDate,getdate())=0 and c.deptCode = '"+user.getDeptCode()+"'");
}
}
if(StringUtils.isNotBlank(caseFlow.getCaseStatus())){ //办件状态
sql.append(" and c.caseStatus = '" + caseFlow.getCaseStatus() + "'");
}
if(StringUtils.isNotBlank(caseFlow.getCaseNo())){ //办件编号
sql.append(" and c.caseNo like '%" + caseFlow.getCaseNo() + "%'");
}
if(StringUtils.isNotBlank(caseFlow.getCaseApplicant())){ //申报人
sql.append(" and c.caseApplicant like '%" + caseFlow.getCaseApplicant() + "%' ");
}
if(StringUtils.isNotBlank(caseFlow.getCaseStartDateBegin()) && StringUtils.isNotBlank(caseFlow.getCaseStartDateEnd())){ //受理时间
sql.append(" and convert(varchar(10),c.caseStartDate,120) >= convert(varchar(10),'" + caseFlow.getCaseStartDateBegin() + "',120) ");
sql.append(" and convert(varchar(10),c.caseStartDate,120) <= convert(varchar(10),'" + caseFlow.getCaseStartDateEnd() + "',120) ");
}
if(StringUtils.isNotBlank(caseFlow.getCaseEndDateBegin()) && StringUtils.isNotBlank(caseFlow.getCaseEndDateEnd())){ //办结时间
sql.append(" and convert(varchar(10),c.caseEndDate,120) >= convert(varchar(10),'" + caseFlow.getCaseEndDateBegin() + "',120) ");
sql.append(" and convert(varchar(10),c.caseEndDate,120) <= convert(varchar(10),'" + caseFlow.getCaseEndDateEnd() + "',120) ");
}
if(caseFlow.getSurplusDay()!=-1){
if(StringUtils.isNotBlank(String.valueOf(caseFlow.getSurplusDay()))){ //剩余天数
sql.append(" and c.surplusDay = " + caseFlow.getSurplusDay() + "");
}
}
if(StringUtils.isNotBlank(caseFlow.getCaseType())){//办件类型
sql.append(" and c.caseType = '" + caseFlow.getCaseType() + "'");
}
if(StringUtils.isNotBlank(code)){//服务事项Code
this.spliceAuth(sql, chType, code);
//sql.append(" and w.servCode = '" + caseFlow.getServCode() + "'");
}
List flowList = jdbcTemplate.queryForList(sql.toString());
parameters.put("zs", flowList.size());
parameters.put("strSql", sql.toString());
try {
System.out.println("=============老方法调用=============");
publicMethodOld( model,request, response, parameters);
} catch (Exception e) {
e.printStackTrace();
}
// try {
// System.out.println("===========新方法调用===========");
// JasperReportUtil.reportHTML(request, response, reportFilePath,
// parameters, flowList);
// } catch (Exception e) {
// e.printStackTrace();
// }
return null;
}

@RequestMapping(params = "method=publicMethodOld")
public void publicMethodOld(ModelMap model,HttpServletRequest request, HttpServletResponse response,Map parameters)
{
try{
ServletContext context = request.getSession().getServletContext();
String reportFilePath = request.getParameter("reportFile");
System.out.println("reportFilePath==="+reportFilePath);
// String reportFilePath = request.getParameter("reportFile");
File reportFile = new File(context.getRealPath(reportFilePath));
JasperPrint jasperPrint = null;
Connection conn = dataSource.getConnection();
System.out.println("reportFile.getPath==="+reportFile.getPath());
try {
// JasperReport jasperReport = (JasperReport)JRLoader.loadObject(new File(reportFile.getPath()));
InputStream inputStream = new FileInputStream(new File(reportFile.getPath()));
// jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, conn);
jasperPrint = JasperFillManager.fillReport(inputStream, parameters, conn);

// 将这个报表结果存入session中给后来的导出报表使用。
request.getSession().setAttribute("jasperReport", jasperPrint);

} catch (Exception e) {
e.printStackTrace();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out
.println("<title>JasperReports - Web Application Sample</title>");
out
.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"../stylesheet.css\" title=\"Style\">");
out.println("</head>");

out.println("<body bgcolor=\"white\">");

out
.println("<span class=\"bnew\">JasperReports encountered this error :</span>");
out.println("<pre>");

e.printStackTrace(out);
e.printStackTrace();

out.println("</pre>");

out.println("</body>");
out.println("</html>");
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}

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();
} else {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out
.println("<title>JasperReports - Web Application Sample</title>");
out
.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"../stylesheet.css\" title=\"Style\">");
out.println("</head>");

out.println("<body bgcolor=\"white\">");

out.println("<span class=\"bold\">Empty response.</span>");

out.println("</body>");
out.println("</html>");
}
}catch(Exception ee){
ee.printStackTrace();
}
}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧