我正在研究一個允許用戶下載動態生成的PDF文件的網絡應用程序。Adobe Reader無法在IE6中打開下載的文件
這工作正常,在IE8和Firefox,但未能在IE6使用Adobe Reader給消息「有一個錯誤打開此文件。該文件無法找到」
如果我將文件保存到硬盤的第一個那麼它在Reader中打開罰款。
我已經給文件一個簡單的短文件名,沒有空格,所以不知道還有什麼要嘗試。任何建議都非常受歡迎。
更多信息:PDF使用abcpdf插件
我正在研究一個允許用戶下載動態生成的PDF文件的網絡應用程序。Adobe Reader無法在IE6中打開下載的文件
這工作正常,在IE8和Firefox,但未能在IE6使用Adobe Reader給消息「有一個錯誤打開此文件。該文件無法找到」
如果我將文件保存到硬盤的第一個那麼它在Reader中打開罰款。
我已經給文件一個簡單的短文件名,沒有空格,所以不知道還有什麼要嘗試。任何建議都非常受歡迎。
更多信息:PDF使用abcpdf插件
也許是因爲在Adobe Reader中的ActiveX IE超時設置在asp.net代碼生成。您使用部分完成的文檔回覆瀏覽器,然後程序花費一些時間繼續響應文檔的其餘部分,並且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";
是否真的有必要對您的網頁IE6的支持?一個有效的解決方案是否只需要用戶升級到更高版本的IE?
IE6在兩個半月前死亡。 (IE6 Funeral)
或者,如果您確實想繼續支持IE6,只需向IE6用戶提供有關如何右鍵單擊鏈接以將文件保存在HD上的說明。 – nico 2010-05-19 17:49:35
不幸的是,在這裏所有的開發者都感到懊惱,因此有一個支持IE6的業務需求。只是提供解決方法的解釋是我的回退解決方案,但想知道爲什麼這個問題首先發生 – chillysapien 2010-05-20 09:20:26
恕我直言,這是一個頭解釋問題。我不是很熟悉或喜歡的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-disposition:
附件設置Content-Length:
在一起可能會失敗,在Safari和IE瀏覽器的工作。
希望它可以幫助...
我想我已經在IE6中觀察到這種最令人討厭的行爲(錯誤),如果我記得,該錯誤的原因是,該文件並沒有存儲在緩存中,但已過期/立即刪除。請檢查以下內容:
PDF文檔在發送響應之前完全生成我相信 – chillysapien 2010-05-13 09:44:33
檢查MIME類型以查看您是否將正確的MIME類型作爲PDF響應給瀏覽器? – VOX 2010-05-13 10:30:47
MIME類型設置爲application/pdf。 – chillysapien 2010-05-13 12:57:29