- - PR -
ASP.NETでPDFを表示するには?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-19 18:48
お世話になっております。
ASP.NETでPDFをサーバからストリームして出力、ブラウザに表示させたいのですが、うまくいきません。 実行すると何故か「ファイルのダウンロード」というダイアログが表示されてしまうんです。(以下) ----------------------------------------------------------- ファイルによってはコンピュータに問題を・・・(略) ファイル名:hoge.aspx(実行したASP.NETのファイル名) ファイルの種類:ASP.NET Server Page 発信元:localhost ファイルを開くか、ファイルをコンピュータに保存するか選択してください。 [開く] [保存] [キャンセル] [詳細情報] ----------------------------------------------------------- テストはPersonalWebServerで行っています。hoge.aspxというファイルを作ってその中でPDFを出力するメソッドを実行しています。 PDFはResponse.OutputStreamに出力されるようにしています。 MIMEタイプをPDFにすることもやっています。 Response.ContentType = "application/pdf"; 上記のダイアログで保存を選び、ファイル名の拡張子をPDFに変更して実行すると期待したPDFファイルが表示されますので、PDF出力は成功している模様です。ブラウザにPDFをPDFとして認識してブラウザ上で表示してもらうことに失敗しているようなんです。 ブラウザにPDFを認識してもらうのにはContentTypeの設定以外に何かやらなければならないことがあるのでしょうか? どなたか調査方法とか手がかりでも結構ですので何かあれば教えてください。 | ||||
|
投稿日時: 2003-11-19 21:12
ファイル名の拡張子をpdfにしてやればいいのでは?方法は、過去ログにあるので検索してみてください。 Response.ApendHeader("Content-Disposition","inline;filename=" + HttpUtility.UrlEncode("ファイルのフルパス名"); かな? | ||||
|
投稿日時: 2003-11-20 09:42
>ファイル名の拡張子をpdfにしてやればいいのでは?方法は、過去ログにあるので検索してみてください。
> > 試してみましたが、ダメでした。 ファイルダウンロードのダイアログが表示されて内容が ファイル名:hoge.pdf ファイルの種類:PDFファイル に変わっただけでした。 | ||||
|
投稿日時: 2003-11-25 18:55
すみません、見落としていました。
後は、クライアントの設定ではないでしょうか。 普通のエクスプローラのツール→フォルダオプション→ファイルの種類→PDFタブにある、「ダウンロード後に常に開くように設定する」 | ||||
|
投稿日時: 2003-11-26 08:32
そもそもファイルの種類が「Adobe Acrobat 文書」となるべきところ、
のように表示されること自体、何か変な気がするのですが……。 クライアントに、AcrobatあるいはAcrobat Readerが、ちゃんとインストールされていますか? もしくはファイルの関連付けが、ぐちゃぐちゃになってるとか……。 [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-11-26 08:32 ] | ||||
|
投稿日時: 2003-11-26 09:49
> 後は、クライアントの設定ではないでしょうか。
>普通のエクスプローラのツール→フォルダオプション→ファイルの種類→PDFタブにある、 >「ダウンロード後に常に開くように設定する」 > 試しましたが何も変わりませんでした。 また上記の設定は行っていなくても、例えばどこかのサイトでPDFファイルへのリンクをクリックするとIE上にPDFが表示されます。 >そもそもファイルの種類が「Adobe Acrobat 文書」となるべきところ、 > ごめんなさい。今確認したところ Adobe Acrobat Document になっていました。 >クライアントに、AcrobatあるいはAcrobat Readerが、ちゃんとインストールされています >か? >もしくはファイルの関連付けが、ぐちゃぐちゃになってるとか……。 > 正常にインストールしています。 テストは2台で行っていて両方のマシンで今回の現象が発生しております。 また、そのうちの1台はほとんど使っていないきれいな状態ですので関連づけがおかしくなったり、OSが不安定な状態になったりということはないと思います。 | ||||
|
投稿日時: 2003-11-26 13:24
hiro-taさん、こんにちは。
こんな感じでどうですか?
| ||||
|
投稿日時: 2003-11-26 13:58
できました!
きくちゃんさん、ありがとうございます。 >Response.Clear() >Response.Buffer = True >Response.ContentType = "application/pdf" >Response.AppendHeader("Content-Disposition", "inline") >Response.AppendHeader("Content-Transfer-Encoding", "base64") > >Response.Flush() >Response.End() > 全部やったほうが良いのかもしれませんが、とりあえずひとつひとつ試していった ところ、 >Response.Flush() か >Response.End() のどちらかを最後に行えばうまくいくようです。 あきらめかけていたので本当に助かりました。皆さん、どうもありがとうございました。 |