首页 文章

PDF文件下载不仅适用于iPad特定浏览器

提问于
浏览
1

在服务器端生成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 回答

  • 2

    测试后,上面粘贴的下载操作代码似乎工作正常,因为问题是特定于BROWSER的 .

    Andriod Tablet - Firefox浏览器将pdf下载到弹出窗口 . iPad:Safari - FIX:强制在新标签中打开内容,如下所示:

    window.open(print_url);

    其中print_url是baseurl action.do additional_parameter .

  • 1

    要显示pdf而不是要求浏览器保存它,请使用“内联”而不是“附件” .

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

    此外,您要设置内容类型两次,一次在 Headers 中,一次使用 setContentType() . 我确定这是一个错误来源,但似乎需要考虑改变 .

相关问题