Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(host,
user, pass);
Map parameters = new HashMap();
parameters.put("SUBREPORT_DIR", reportFilePath);
if (para != null && !para.equals("0")) {
parameters.put("Id", para);
}
if (organizationType != null && !organizationType.equals("")) {
parameters.put("organizationType", organizationType);
}
if (organizationName != null && !organizationName.equals("")) {
parameters.put("organizationName", organizationName);
}
if (!workerType.equals(""))
{
workerType= new String(workerType.getBytes("ISO8859_1"), "utf-8");
parameters.put("workerType", workerType);
}
byte[] bytes = JasperRunManager.runReportToPdf(
reportFile.getPath(), parameters, conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
out.clear();
out = pageContext.pushBody();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream .close();
JasperPrint print = JasperFillManager.fillReport(
reportFile.getPath(), parameters, conn);
JasperPrintManager.printReport(print, true);
conn.close();
这是生成PDF预览的代码, 在我自己机子上是正常预览PDF,而别人的机子是变成一个文件下载。。。是不是因为浏览器插件问题呢,还是代码有问题,,请大神指教
这是因为浏览器的设置导致的。
代码中已经设置了响应内容的MIME类型为"application/pdf",表明返回的是一个PDF文档。但是,有的浏览器可能会将所有的"application/pdf"响应视为一个下载请求,而不是预览请求。
您可以尝试在代码中添加以下内容来解决这个问题:
response.setHeader("Content-Disposition", "inline; filename=report.pdf");
这会告诉浏览器将响应视为内联(即嵌入到网页中)的PDF文档,而不是下载文件。
需要注意的是,不同浏览器对于这种设置可能有不同的支持,所以您需要测试一下这个解决方案是否可行。
此外,如果代码中的JasperPrintManager.printReport()方法调用没有被注释掉的话,这会导致在本地打印PDF文档,而不是在浏览器中预览。因此,您应该将其注释掉。