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 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题