2015-06-17 4 views
1

Мое приложение работает на сервере tomcat, и я уже разработал метод загрузки pdf-файла с помощью jasper. Что мне нужно сделать, загрузите этот файл в папку внутри сервера. Я попытался, и я не уверен, как это сделать.скачать отчет о jasper в определенном месте на сервере

  jasperReport = JasperCompileManager.compileReport(absolutePathToIndexJSP); 
      JasperPrint gh = JasperFillManager.fillReport(jasperReport,parameters, JRdataSource); 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

      Exporter exporter = new Exporter(); 
      String downloadFileName = ""; 


      downloadFileName = "Fund-Transfer-Report-" + reportGenerateDate + ".pdf"; 
       response.setHeader("Content-Disposition", "attachment; filename=" + downloadFileName); 
       response.setContentType("application/pdf"); 
       exporter.exportPdf(response, gh, baos); 

И это перейти к методу экспортера, как показано ниже,

public void exportPdf(HttpServletResponse response, JasperPrint jp, ByteArrayOutputStream baos) throws JRException, IOException { 

    //OutputStream ouputStream = new FileOutputStream(new File("C:/JasperReports/Account_Report.pdf")); 
    //Get response output stream to download report file 
    OutputStream ouputStream = response.getOutputStream(); 

    // Create a JRPdfExporter instance 
    JRPdfExporter pdfExporter = new JRPdfExporter(); 

    // Here we assign the parameters jp and baos to the exporter 
    pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); 
    pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); 

    pdfExporter.exportReport(); 

    ouputStream.write(baos.toByteArray()); 
    ouputStream.flush(); 
    ouputStream.close(); 
    } 

Что это делает это нормально загрузить PDF в папку загрузки. Мне нужно иметь возможность загрузить его в местоположение на сервере. Пожалуйста посоветуй.

ответ

1

Вы можете использовать JasperExportManager, чтобы сохранить созданный PDF в определенном месте в сервере

JasperExportManager.exportReportToPdfFile(jasperPrint, exportPath); 

например:

String exportDir = System.getProperty("jboss.server.config.dir") +"/jasperreport/export"; 
String exportPath = exportDir + "/reportName.pdf"; 
JasperReport jasperReport = CompileManager.compileReport(jrxmlFilePath, mainReportName); 
JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameters, jsonDataSource); 
JasperExportManager.exportReportToPdfFile(jasperPrint, exportPath); 
+1

Где вы узнали, что OP использует сервер JBoss? – BalusC

+0

Речь идет не о сервере, а о том, чтобы экспортировать pdf-файл на путь к серверу, например, я использовал сервер jboss, но на самом деле это логический путь, доступный с сервера .... – Arasu

+0

Я не определил: jboss.server.config .dir, вы можете установить небольшой пример? ty –

1

Я закодированы, как это и работает нормально в моем местном (сервере) машины по указанному пути к папке:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    Connection conn=null; 
    JasperPrint jp=null; 

    // month and year... 
    int month=8; 
    int year=2015; 

    try{ 
     // DB connection... 
     Class.forName("com.mysql.jdbc.Driver"); 
     conn=DriverManager.getConnection("jdbc:mysql://localhost/test","root","sachin"); 
     HashMap<String, Object> hm=new HashMap<String, Object>(); 

     // .jrxml file path (location) 
     String path="/home/sachin/sachin/workspace/JasperReport1/WebContent/report/SalaryReport12.jrxml"; 


     JasperReport design=JasperCompileManager.compileReport(path); 
     jp=JasperFillManager.fillReport(design,null,conn); 

     // folder creation path configured in web.xml 
     String basePath=(String) request.getSession().getServletContext().getInitParameter("folderpath"); 
     // name for folder as month_year 
     basePath=basePath+"/"+month+"_"+year; 
     // name for pdf file and saves in a created folder 
     String exportPath = basePath + "/salarySlip.pdf"; 
     String jasperReport = JasperCompileManager.compileReportToFile(path); 
     JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, hm,conn); 
     JasperExportManager.exportReportToPdfFile(jasperPrint, exportPath); 


    }catch(Exception e){ 

     System.err.println(e); 
    } 

} 
Смежные вопросы