1

私は、ユーザーが動的に生成されたPDFファイルをダウンロードできるようにするWebアプリに取り組んでいます。

これはIE8とFirefoxでは正常に機能しますが、Adobe Readerを使用したIE6では失敗し、「このドキュメントを開くときにエラーが発生しました。このファイルが見つかりません」というメッセージが表示されます。

最初にファイルをディスクに保存すると、Readerで正常に開きます。

ファイルにスペースを含まない単純な短いファイル名を付けたので、他に何を試すべきかわかりません。どんな提案でも大歓迎です。

詳細情報:PDFは、abcpdfプラグインを使用してasp.netコードで生成されます

4

5 に答える 5

1

あなたのウェブページでIE6サポートが本当に必要ですか?有効な解決策は、単にユーザーにIEの新しいバージョンへのアップグレードを要求することでしょうか?

IE6は2か月半前に亡くなりました。(IE6葬儀

于 2010-05-19T14:17:37.057 に答える
1

Response.ClearHeaders();を試しましたか ?

于 2010-05-19T17:44:02.290 に答える
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

おそらく、Adobe Reader ActivexforIEのタイムアウト設定が原因です。部分的に完成したドキュメントでブラウザに応答すると、プログラムは残りのドキュメントの応答を続行するのに時間がかかり、AdobeReaderがタイムアウトしました。PDFドキュメント全体を生成してから、httpリクエストに応答してみてください。たとえば、phpで。

$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.asp」を試してください-/file.pdfにリダイレクトしてください)
于 2010-05-20T03:14:42.630 に答える