在服务器端生成PDF文件并推送到客户端进行下载 . 虽然下载适用于Windows上的所有浏览器,但在IPAD上失败 . 请指教 .
规格:OS 6,Safari 6.1,Chrome 23.0.1271.100
请注意:在此申请中,pdf不会下载到新网址(无重定向) .
一般行为:IPad浏览器(safari / chrome)不支持下载窗口,因此预计打开pdf并提供在pdf兼容应用程序中查看的选项 . 目前还没有发生这种情况 .
当我调试下面的servlet动作代码进行下载时,pdf文件在服务器上成功生成,但Ipad上的浏览器不显示:-(
代码示例:
/ **设置响应 Headers ** /
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-Disposition", "attachment;filename=sample.pdf");
response.setHeader("Connection", "close");
response.setHeader("Cache-Control","cache");
response.setHeader("Pragma","cache");
response.setDateHeader ("Expires", dt.getTime() + 100000);
/ 写入输出 /
InputStream stream = info.getInputStream();
OutputStream os = response.getOutputStream();
try {
response.setContentType(contentType);
copy(stream, response.getOutputStream());
}
finally {
if (stream != null) {
stream.close();
}
}
2 回答
测试后,上面粘贴的下载操作代码似乎工作正常,因为问题是特定于BROWSER的 .
Andriod Tablet - Firefox浏览器将pdf下载到弹出窗口 . iPad:Safari - FIX:强制在新标签中打开内容,如下所示:
window.open(print_url);
其中print_url是baseurl action.do additional_parameter .
要显示pdf而不是要求浏览器保存它,请使用“内联”而不是“附件” .
此外,您要设置内容类型两次,一次在 Headers 中,一次使用
setContentType()
. 我确定这是一个错误来源,但似乎需要考虑改变 .