1

我正在开发一个允许用户下载动态生成的 PDF 文件的网络应用程序。

这在 IE8 和 Firefox 中工作正常,但在 IE6 中失败,Adobe Reader 给出消息“打开此文档时出错。找不到此文件”

如果我先将文件保存到磁盘,那么它会在 Reader 中正常打开。

我给文件一个简单的短文件名,没有空格,所以不知道还能尝试什么。任何建议都非常受欢迎。

更多信息:使用 abcpdf 插件在 asp.net 代码中生成 PDF

4

5 回答 5

1

你试过Response.ClearHeaders(); ?

于 2010-05-19T17:44:02.290 回答
1

您的网页真的需要 IE6 支持吗?一个有效的解决方案是简单地要求用户升级到更高版本的 IE 吗?

IE6 在两个半月前死了。(IE6葬礼

于 2010-05-19T14:17:37.057 回答
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 中运行。

希望能帮助到你...

于 2010-05-19T19:34:25.813 回答
0

可能是因为 Adob​​e Reader Activex for IE 中的超时设置。您使用部分完成的文档响应浏览器,然后您的程序需要一些时间来继续响应文档的其余部分,并且 Adob​​e Reader 超时。尝试生成整个 PDF 文档,然后响应 http 请求。例如在 php.ini 中。

$s = "";
for(int i=0;i<10;i++)
    $s .= "1";
echo #s;

代替

for(int i=0;i<10;i++)
    echo "1";
于 2010-05-13T09:13:38.497 回答
0

我想我在 IE6 中观察到了这种最烦人的行为(错误),如果我记得,错误的原因是文件没有存储在缓存中,而是立即过期/删除。检查以下内容:

  1. 您是否通过 HTTPS 返回文件?
  2. 检查响应的标题,关于过期的任何信息?
  3. 您是否对静态提供的文件有同样的问题(但在几乎相同的 URL 中,尝试使用浏览器重定向到 /file.pdf 的“.../file.pdf”和“.../file.asp”)
于 2010-05-20T03:14:42.630 回答