2016-06-14 61 views
0

我是新的賈斯珀的東西,我想嘗試從我的應用程序生成與Jasper的PDF文件。 這是場景:從服務調用賈斯珀文件

我有一個文件(reportEmployee.jrxml),我在iReport中建立,在我的應用程序中,我有一個鏈接,如果我們單擊該鏈接,我的應用程序將創建報告在pdf文件並保存到我的本地存儲。

我已經嘗試過excel和單詞,它的工作原理,只有pdf,我覺得很難做到這一點。

這是EmployeeManagerImpl代碼
1. JSP文件

<td><a href="<c:url value ="/savepdf"/>">Save to PDF</a></td> 
<td><a href="<c:url value = "/save"/>">Save to Excel</a></td> 
<td><a href="<c:url value = "/saveword"/>">Save to Word</a></td> 

2.控制器

@RequestMapping("/savepdf") 
public String dataEmployeePdf() 
{ 
    employeeManager.dataEmployeePDFDownload(); 
    return "employ/editEmployeeList"; 
} 

3.(實施EmployeeManager的)

@Override 
public void dataEmployeePDFDownload() { 
    // TODO Auto-generated method stub 
    try 
    { 

     File file = new File("report/reportEmployee.jrxml"); 
     String absolutePath = file.getAbsolutePath(); 
     InputStream input = new FileInputStream(new File(absolutePath)); 
     JasperReport jasperReport = JasperCompileManager.compileReport(input); 
     JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null); 
     JasperExportManager.exportReportToPdf(jasperPrint); 
    } 
    catch(JRException ex) 
    { 
     ex.getMessage(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

我不需要通過我的應用程序從數據庫發送數據,因爲我已經使該文件(employeeReport.jrxml)從數據庫中自動獲取數據。 它相同的情況下與保存字,並保存到Excel,當我們點擊該鏈接,它會寫入文件到本地存儲這樣

enter image description here

任何人都可以幫我嗎?我希望我沒有轉貼這個 謝謝

回答

1

要下載文件,您必須將內容傳遞給response.getOutputStream()。您可以將其他信息設置爲響應,如用於設置fileName,enconding等的標題信息或設置文件contentType。

@RequestMapping("/savepdf") 
    public void dataEmployeePdf(HttpServletResponse response) { 
     try { 

      File file = new File("report/reportEmployee.jrxml"); 
      String absolutePath = file.getAbsolutePath(); 
      InputStream input = new FileInputStream(new File(absolutePath)); 
      JasperReport jasperReport = JasperCompileManager.compileReport(input); 
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null); 
      JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream()); 
     } catch (JRException ex) { 
      ex.getMessage(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
+0

讓我試試看,隊友,但是會發送到這個方法的HttpServletResponse呢? –

+0

這是春天,注入響應的方法 –

+0

謝謝你的幫助,隊友 –