0

I am using the iReport to make the JRXML file. To export this data using Java Struts, I am using the following code.

public ActionForward reportExport(ActionMapping mapping, ActionForm form,
   HttpServletRequest req, HttpServletResponse res) throws Exception {
  String reportType2=req.getParameter("reporttype");
  System.out.println("reportType2"+reportType2);
  String filename = "slademofinalreport1.jrxml";
  /*String reporttype = "pdf";*/
  String reporttype = reportType2;
  System.out.println(filename);
  System.out.println(reporttype);

  Class.forName("com.mysql.jdbc.Driver");
  Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/epim","", "");
  String query="select projectname,processname,queuename,sladuedate,d.createddate,d.lastupdatedate,count(d.documentid)as numofdocuments,datediff(d.createddate,d.lastupdatedate)/count(d.documentid) as averagesla,datediff(d.sladuedate,d.createddate) as sladefined from epim.mstqueue mq,epim.userproject u,epim.documentqueuedetails d,epim.mstproject mproj,epim.mstprocess mproc where d.projectid=u.projectid and u.userid=13 and mproj.projectid=d.projectid and mproc.processid=d.processid and mq.queueid=d.queueid group by queuename ";

  PreparedStatement stmt1=con.prepareStatement(query);
  //stmt1.setInt(1,200);
  java.sql.ResultSet rs3=stmt1.executeQuery();
  /*Statement stmt1=(Statement) con.createStatement();
  java.sql.ResultSet rs3= stmt1.executeQuery("select projectname,processname,queuename,sladuedate,d.createddate,d.lastupdatedate,count(d.documentid)as numofdocuments,datediff(d.createddate,d.lastupdatedate)/count(d.documentid) as averagesla,datediff(d.sladuedate,d.createddate) as sladefined from epim.mstqueue mq,epim.userproject u,epim.documentqueuedetails d,epim.mstproject mproj,epim.mstprocess mproc where d.projectid=u.projectid and u.userid=13 and mproj.projectid=d.projectid and mproc.processid=d.processid and mq.queueid=d.queueid group by queuename");*/
  JRResultSetDataSource obj=new JRResultSetDataSource(rs3);

//  String path = application.getRealPath("/");
  JasperReport jasperReport = JasperCompileManager.compileReport("D:/subash/kmsnewwork/KMS_SUBASH/WebContent/jasperreport/"+ filename);
  System.out.println("Report Compiled...");
  JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null,obj);
  System.out.println("Report Created...");
  ServletOutputStream ouputStream = res.getOutputStream();
  JRExporter exporter = null;

  if( "pdf".equalsIgnoreCase(reporttype) )
  {
  res.setContentType("application/pdf");
  res.setHeader("Content-Disposition", "inline; filename=\"file.pdf\"");

  exporter = new JRPdfExporter();
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
  }
  else if( "rtf".equalsIgnoreCase(reporttype) )
  {
  res.setContentType("application/rtf");
  res.setHeader("Content-Disposition", "inline; filename=\"file.rtf\"");

  exporter = new JRRtfExporter();
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
  }
  else if( "html".equalsIgnoreCase(reporttype) )
  {
  exporter = new JRHtmlExporter();
  exporter.setParameter(JRHtmlExporterParameter.OUTPUT_STREAM,false);
  exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, new Boolean(false)); 

  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
  }
  else if( "xls".equalsIgnoreCase(reporttype) )
  {
  res.setContentType("application/xls");
  res.setHeader("Content-Disposition", "attachment; filename=\"file.xls\"");

  exporter = new JRXlsExporter();
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
  }
  else if( "csv".equalsIgnoreCase(reporttype) )
  {
  res.setContentType("application/csv");
  res.setHeader("Content-Disposition", "inline; filename=\"file.csv\"");

  exporter = new JRCsvExporter();
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
  }

  try
  {
  exporter.exportReport();
  }
  catch (JRException e)
  {
  throw new ServletException(e);
  }
  finally
  {
  if (ouputStream != null)
  {
  try
  {
  ouputStream.close();
  }
  catch (IOException ex)
  {
   System.out.println("exception thrown");
  }
  }
  }
  /*return mapping.findForward("goLoginPage");*/
  return mapping.findForward("goReportFilterPage");
 }

All the exporting format is getting the chart except the HTML. Can anyone help me? Should I do anything extra for HTML because the chart is not getting displayed using the HTML format?

4

1 に答える 1

1

他のファイル形式とは異なり、html ファイルには画像が埋め込まれていないため、特別な注意が必要です。

JRHtmlExporterParameterを参照してください。

「重要な問題は画像です。HTML 形式は画像を個別のファイルとして保存するため、エクスポータはこれらの画像がどこに保存されるかを知る必要があります。ディスクに保存されている場合、IMAGES_URI パラメータはファイル名を含む文字列で初期化されます。それらがメモリに残っている場合、IMAGES_URI はブラウザに画像を送信できるリソース (webapp の例に示されているように、画像サーブレットなど) を指している必要があります。"

于 2010-10-16T06:41:40.577 に答える