2010-05-04 33 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