我们正在为客户生成PDF文档并使用Servlet为其提供服务。 以下代码适用于Firefox,Chrome和Opera,但不适用于任何版本的IE。弹出窗口只闪烁IE但没有任何反应。但是,我们可以通过从IE中的地址栏直接请求servlet来显示文件下载对话框。 我们尝试了几种ContentTypes(应用程序/下载,应用程序/ x下载等)
客户端代码:
String URL = "/files/pdf?pdfId=" + getPdfId();
Window.open(URL, "_blank", "");
将pdf作为byte []:
提供服务的Servletbyte[] bytes = getFileAsByteArray();
BufferedInputStream in = new BufferedInputStream(new ByteArrayInputStream(bytes));
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
response.setHeader("Content-Disposition", "attachment; filename=document.pdf");
response.setContentType("application/octet-stream");
response.setContentLength(bytes.length);
byte[] buffer = new byte[8192];
for (int length = 0; (length = in.read(buffer)) > 0;) {
out.write(buffer, 0, length);
}
out.flush();
out.close();
对此有何想法?
答案 0 :(得分:2)
试试这个:
Content-Disposition: inline
而不是:
Content-Disposition: attachment;filename=document.pdf
试试这个,然后告诉一些事情 发现如果我使用内联,那么我不应该使用 filename = document.pdf,这在IE中不起作用。 (其他浏览器忽略它)
您可以在此处阅读:http://indiwiz.com/2009/03/11/forcing-http-download/
答案 1 :(得分:0)
可能是因为pdf插件问题。 Link to adobe site for more details
答案 2 :(得分:0)
如果你无法解决问题 - 尝试改变问题中的内容!尝试发送ziped pdf文件或其他内容。它应该可以帮助你找到麻烦的根源。如果一切都适用于zip文件,则无需发送pdf文件
答案 3 :(得分:0)
尝试:
Window.open(GWT.getHostPageBaseURL()+URL,"","");
这可能有效! 我正在使用:
com.google.gwt.user.client.Window.open(GWT.getHostPageBaseURL()+URL, "", "");
它工作得很好