我们正在使用JasperReports 5.6.1生成报告,并允许将相同的模板导出到PDF或Powerpoint。当在本地运行时,PDF和PPTX文件下载得很好。当我们部署到服务器时,PDF可以正常工作,但是PPTX文件不能打开。当我们在本地运行时,它被部署到tomcat,但是当部署到服务器时,它在Websphere上运行。
我试过并注意到的事情:
x
类型文件中的一个问题,只是为了看看会发生什么,并且在相同的模板中可以很好地工作。下面是我们编写响应的代码:
if ("xlsx".equals(type)) {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".xlsx");
} else if ("pptx".equals(type)) {
response.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation");
response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pptx");
response.setCharacterEncoding("UTF-8");
} else {
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pdf");
}
try (final ByteArrayOutputStream reportResult = reportsService.generateReport(
getDeal(userId, dealId, sessionStore),
getScenarioModel(userId, dealId, scenarioId, sessionStore), reportId, type)) {
configureResponse(response, type, reportResult, dealId + "-" + scenarioId);
// Write to http response
reportResult.writeTo(response.getOutputStream());
}
response.flushBuffer();
我已经没有关于故障排除步骤的想法了,如果不能在本地复制它,我发现很难诊断。
发布于 2016-10-13 21:03:08
这是在黑暗中的一次尝试,但您确定mime类型在您的WebSphere实例中配置正确吗?(我意识到,在响应中设置内容类型应该可以避免为该MIME类型配置web服务器的要求,但它毕竟是WebSphere;-)
我愿意打赌PDF是配置好的MIME类型,但是PPTX不是。你能检查一下吗?
与Tomcat不同,Tomcat是一种“捆绑”的http堆栈和servlet容器,WebSphere有一个单独的http堆栈(每个应用程序都有一个单独的JVM ),因此在那里可能需要配置,而对于更简单的容器,这并不奇怪。
https://stackoverflow.com/questions/26418347
复制相似问题