public void odt() throws JRException { long start = System.currentTimeMillis(); File sourceFile = new File("build/reports/DataSourceReport.jrprint"); JasperPrint jasperPrint = (JasperPrint) JRLoader.loadObject(sourceFile); File destFile = new File(sourceFile.getParent(), jasperPrint.getName() + ".odt"); JROdtExporter exporter = new JROdtExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString()); exporter.exportReport(); System.err.println("ODT creation time : " + (System.currentTimeMillis() - start)); }
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { List<JasperPrint> jasperPrintList = BaseHttpServlet.getJasperPrintList(request); if (jasperPrintList == null) { throw new ServletException("No JasperPrint documents found on the HTTP session."); } Boolean isBuffered = Boolean.valueOf(request.getParameter(BaseHttpServlet.BUFFERED_OUTPUT_REQUEST_PARAMETER)); if (isBuffered.booleanValue()) { FileBufferedOutputStream fbos = new FileBufferedOutputStream(); JROdtExporter exporter = new JROdtExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos); try { exporter.exportReport(); fbos.close(); if (fbos.size() > 0) { response.setContentType("application/vnd.oasis.opendocument.text"); // response.setHeader("Content-Disposition", "inline; filename=\"file.odt\""); response.setContentLength(fbos.size()); ServletOutputStream ouputStream = response.getOutputStream(); try { fbos.writeData(ouputStream); fbos.dispose(); ouputStream.flush(); } finally { if (ouputStream != null) { try { ouputStream.close(); } catch (IOException ex) { } } } } } catch (JRException e) { throw new ServletException(e); } finally { fbos.close(); fbos.dispose(); } // else // { // response.setContentType("text/html"); // PrintWriter out = response.getWriter(); // out.println("<html>"); // out.println("<body bgcolor=\"white\">"); // out.println("<span class=\"bold\">Empty response.</span>"); // out.println("</body>"); // out.println("</html>"); // } } else { response.setContentType("application/vnd.oasis.opendocument.text"); // response.setHeader("Content-Disposition", "inline; filename=\"file.odt\""); JROdtExporter exporter = new JROdtExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList); OutputStream ouputStream = response.getOutputStream(); 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) { } } } } }