jasperreport 报表直接打印问题
@RequestMapping("/reportFmt")
public void printFmt(String fmtKey, String valuemapStr,
HttpServletRequest request, HttpServletResponse response) {
if (StringUtils.isBlank(fmtKey))
return;
Map fmtMap = reportLoadService.loadFmtDetail(fmtKey);
if (fmtMap == null)
return;
String reportName = (String) fmtMap.get("R_CRYSTALNAME");
if (StringUtils.isBlank(reportName))
return;
ServletContext servletContext = request.getSession()
.getServletContext();
try {
String avatarFolder = servletContext.getRealPath("/report");
File file = new java.io.File(avatarFolder, reportName);
if (!file.exists())
return;
reportName = file.getPath();
Map valuemap = JsonTools.parseJSON2Map(valuemapStr);
JasperReport jasperReport = JasperCompileManager
.compileReport(reportName);
byte[] pdfStream = JasperRunManager.runReportToPdf(jasperReport,
valuemap, dataSource.getConnection());
// 输出流
PdfReader reader = new PdfReader(pdfStream);
ByteArrayOutputStream bos = new ByteArrayOutputStream(
pdfStream.length);
try {
// 给pdf加上脚本实现自动打印
StringBuffer script = new StringBuffer();
script.append("this.print({bUI:false,bSilent:true,bShrinkToFit:false});");
PdfStamper stamp = new PdfStamper(reader, bos);
stamp.setViewerPreferences(PdfWriter.HideMenubar
| PdfWriter.HideToolbar | PdfWriter.HideWindowUI);
stamp.addJavaScript(script.toString());
stamp.close();
} catch (DocumentException e) {
logger.error(e.getMessage(), e.getCause());
}
// 输出pdf
byte[] bytes = bos.toByteArray();
if (bytes != null && bytes.length > 0) {
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
response.setHeader("Expires", "0");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
ServletOutputStream ouputStream = response.getOutputStream();
try {
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
} finally {
if (ouputStream != null) {
try {
ouputStream.close();
} catch (IOException ex) {
}
}
}
}
} catch (JRException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
生成的pdf 文件流怎么在jsp,html或extjs中怎么显示出来