我正在使用Jasper Report创建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());
}
我没有收到任何错误信息。一切都正常工作,但文档无法流式传输。请帮助我解决这个问题。
Size
是否正确打印?此外,请注意:fileName
!=filePath
。不确定这是否只是另一个愚蠢的复制和粘贴错误 ;) - BalusC