asc002 2013-08-01 02:48 采纳率: 0%
浏览 1730

ireport,在java工程中预览PDF,被识别为文件下载

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,而别人的机子是变成一个文件下载。。。是不是因为浏览器插件问题呢,还是代码有问题,,请大神指教

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-09 19:22
    关注

    这是因为浏览器的设置导致的。


    代码中已经设置了响应内容的MIME类型为"application/pdf",表明返回的是一个PDF文档。但是,有的浏览器可能会将所有的"application/pdf"响应视为一个下载请求,而不是预览请求。


    您可以尝试在代码中添加以下内容来解决这个问题:

    response.setHeader("Content-Disposition", "inline; filename=report.pdf");
    

    这会告诉浏览器将响应视为内联(即嵌入到网页中)的PDF文档,而不是下载文件。


    需要注意的是,不同浏览器对于这种设置可能有不同的支持,所以您需要测试一下这个解决方案是否可行。


    此外,如果代码中的JasperPrintManager.printReport()方法调用没有被注释掉的话,这会导致在本地打印PDF文档,而不是在浏览器中预览。因此,您应该将其注释掉。

    评论

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!