Экспорт диаграммы iReport в формате HTML - PullRequest
0 голосов
/ 15 октября 2010

Я использую iReport для создания файла JRXML. Чтобы экспортировать эти данные с помощью Java Struts, я использую следующий код.

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");
 }

Весь формат экспорта получает диаграмму, кроме HTML. Может кто-нибудь мне помочь? Должен ли я сделать что-то дополнительно для HTML, потому что диаграмма не отображается в формате HTML?

1 Ответ

1 голос
/ 16 октября 2010

В отличие от других форматов файлов изображения не встроены в html-файл, поэтому требуется особая осторожность.

См. JRHtmlExporterParameter :

"Важной проблемой являются изображения. Формат HTML хранит изображения в виде отдельных файлов, поэтому экспортеру необходимо знать, где будут храниться эти изображения. Если они хранятся на диске, параметр IMAGES_URI будет инициализирован строкой, содержащей имя файла на диске. Если они остаются в памяти, IMAGES_URI должен указывать на ресурс, который может отправлять изображения в браузер (например, сервлет изображения, как показано в примере с веб-приложением). "

...