2010-05-04 58 views
3

我正在使用jasper報告創建pdf文檔,我需要從servlet中將該pdf文檔進行流式處理。任何人都可以幫助我在哪裏犯錯。這是我在我的應用程序中使用的代碼片段。如何從servlet流式傳輸pdf文檔?

ServletOutputStream servletOutputStream = response.getOutputStream(); 

String fileName="test.pdf"; 

response.setContentType("application/pdf"); 
response.setHeader("Content-Disposition","attachment; filename=\"" + fileName + "\""); 
response.setHeader("Cache-Control", "no-cache"); 
try 
{ 
     Map parameters = new HashMap(); 
     parameters.put("SUBREPORT_DIR", JasperReportFilepath); 
     parameters.put("TestId", testID); 

     JasperPrint jprint=JasperFillManager.fillReport(filePath, parameters, conn); 

     byte[] output=JasperExportManager.exportReportToPdf(jprint);    
     System.out.println("Size====>"+output.length); 

     servletOutputStream.write(output); 
     servletOutputStream.flush(); 
     servletOutputStream.close(); 

     System.out.println("===============>Streaming perfectly"); 


} 
catch(Exception e) 
{ 
     System.out.println("===============>+JasperException"+e.getMessage()); 
} 

,我不能得到任何錯誤信息also.Everything工作正常,但文件是不是流。請幫我解決問題。

+0

尺寸打印是否正確?還要注意:'fileName'!='filePath'。不知道這是否只是另一個愚蠢的複製和粘貼錯誤;) – BalusC 2010-05-04 11:35:45

回答

2

你最好使用:

JasperExportManager.exportReportToPdfStream(jprint, servletOutputStream); 
+0

嗨Bozho,謝謝你的回覆,我也試過這種方法..但我看不到任何流式文檔。可以給我提供一些代碼片段來流文檔使用此邏輯 – Kumar 2010-05-05 06:17:55

+0

您在「流式傳輸」下理解什麼?該文件應該剛開始下載。 – Bozho 2010-05-05 08:00:11

+0

雅..文件需要下載,但我看不到任何下載.. – Kumar 2010-05-08 04:46:26

0

嘿,晚一天和美元空頭,但有沒有人問他是否曾在他的HTML標籤<OBJECT>

+0

我不明白爲什麼會顯示PDF文件作爲圖像。 – BalusC 2010-10-06 12:07:41

+0

是的,當搜索相同的解決方案時發佈的危險。答案已改善。 – 2010-10-06 12:18:57