2014-01-09 46 views
0

我已經使用以下代碼將jasper報告導出爲使用JSP的pdf文件。通過Servlet或JSP將JasperReport的報告導出爲pdf

response.setHeader("Content-Disposition", "inline; filename=\"application.pdf\""); 
response.setContentType("application/pdf"); 

Connection con; 

String host = "jdbc:mysql://localhost:3306/123"; 
String uname = "root"; 
String upass = ""; 
Class.forName("com.mysql.jdbc.Driver");  

con = DriverManager.getConnection(host, uname, upass); 

String report="C:\\Users\\Acer\\Documents\\NetBeansProjects\\jasper\\1.jrxml"; 
JasperReport jr= JasperCompileManager.compileReport(report); 
JasperPrint jasperPrint = JasperFillManager.fillReport(jr, null, con); 

JasperExportManager.exportReportToPdfFile(jasperPrint, "application.pdf"); 

當我運行在的NetBeans這個JSP文件,並出現以下錯誤消息框出現在瀏覽器:

「文件不以%pdf-開頭 本地\ EWH_ )!50gc#「

此消息來自Adobe Reader。

任何幫助,將不勝感激。

+0

更換吧'當我運行在netbeans'這個JSP文件 - 這是什麼JSP?我沒有看到顯示消息的代碼(「文件不以......開始」) –

+0

上面的代碼被用作jsp文件中的scriptlet。 (包含在'<% and %>之內)。 –

回答

2

使用exportReportToPdfFile()是完全錯誤的:您不想創建文件,而是導出到響應流。因此,將片段的最後一行替換爲:

OutputStream outStream = response.getOutputStream(); 
JasperExportManager.exportReportToPdfStream(jasperPrint, outStream); 
+0

非常感謝Nikos!這個問題已經解決。 :) –

+0

我怎樣才能在ppt中導出報告? –

0

似乎everyting都可以,除了最後一部分,即導出部分。

//Exporting the report as a PDF 
    System.out.println("Exporting pdf"); 
    JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream()); 

    JasperExportManager.exportReportToPdfFile(jasperPrint, "report.pdf");