我正在开发一个允许用户下载动态生成的PDF文件的网络应用。
这在IE8和Firefox中运行良好但在IE6中使用Adobe Reader失败,显示“打开此文档时出错。无法找到此文件”
如果我先将文件保存到磁盘,那么它在Reader中就可以正常打开了。
我给文件一个简单的短文件名,没有空格,所以不知道还有什么可以尝试。任何建议都非常受欢迎。
更多信息:PDF是使用abcpdf插件在asp.net代码中生成的
答案 0 :(得分:1)
您的网页是否真的需要IE6支持?一个有效的解决方案是简单地要求用户升级到更高版本的IE吗?
IE6在两个半月前去世了。 (IE6 Funeral)
答案 1 :(得分:1)
您是否尝试过Response.ClearHeaders();?
答案 2 :(得分:0)
可能是因为Adobe Reader Activex for IE中的超时设置。您使用部分完成的文档响应浏览器,然后您的程序花了一些时间继续响应文档的其余部分并且Adobe Reader超时。尝试生成整个PDF文档,然后响应http请求。例如在php。
$s = "";
for(int i=0;i<10;i++)
$s .= "1";
echo #s;
而不是
for(int i=0;i<10;i++)
echo "1";
答案 3 :(得分:0)
恕我直言,这是一个标题解释问题。我不是很熟悉或不喜欢ASP.NET,但至少在PHP中你需要有这些:
ob_start(); (* should be equivalent to HttpContext.Current.Response.Buffer = true *)
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=somefile.pdf');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
//header('Content-Length: ' . filesize($file));
ob_flush(); (* should be equivalent to HttpContext.Current.Response.Flush() *)
** output the pdf contents here
(* header() should be similar to HttpContext.Current.Response.AddHeader() function *)
请注意,将Content-Length:
与content-disposition:
附件一起设置可能无法在Safari和IE中使用。
希望它有所帮助...
答案 4 :(得分:0)
我认为我在IE6中观察到了这种最烦人的行为(bug),如果我记得,错误的原因是文件没有存储在缓存中,而是立即过期/删除。请检查以下内容: