- - PR -
PDFファイルの開き方
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-14 11:43
ASP.NETとC#を使って作成しています。
新しいブラウザを開かずに同じブラウザ上にPDFを表示したいのですが 方法を教えてください。 プログラム中に↓のように表記しているのですが、エラーがでてしまします。 Context.Server.Transfer("http://localhost/Print/sample.pdf"); 画面の表示だとContext.Server.Transfer("sample.aspx");で 開けるのですが、PDFを開くのには設定がいるのでしょうか? | ||||||||
|
投稿日時: 2004-02-14 13:22
と、いうわけで、 ASPワーカープロセスがPDF形式のファイルを実行しようとしてエラーになっているわけです。
そのPDFにリンクを張っておけばよいのでは? | ||||||||
|
投稿日時: 2004-02-14 14:39
『現在のページの実行を終了し、そのページへの指定した URL パスを使用して新しいページの実行を開始します。』
現在のページの実行が終了してなかったために出たエラーだと思います。 最初からあるPDFでないので、最初の設定ではできませんが コードの途中でリンクをはってみます。 ありがとうございます。 | ||||||||
|
投稿日時: 2004-02-14 15:39
なぜそのように考えました? Transferメソッドは、現在のページの実行を終了させます。 というか、既に終了しているページからメソッドを呼び出すことはできません。(終了してるんですから) 「ページの実行が終了している状態」というのを、どのようにお考えですか? おそらく「〜〜の子要求のパスが無効です」といったエラーが出ているものと思いますが、 このエラーは、Transferメソッドの引数として与えられたページ側に問題がある場合に発生します。 繰り返しになりますが、 今回の場合は、実行しようとしたページがPDFだった(aspxじゃなかった)ためにエラーになっていると思われます。
「コードの途中でリンクをはる」の部分が具体的に何をしようとしているのかわかりませんが、 おそらくなにか勘違いをされているのではないでしょうか? 私が書いた「リンクを張っておけば」は 『<a href="http://localhost/Print/sample.pdf">リンク</a>』という文字列を静的に記述しておけば、 という意味でしたが、 1.ボタン押下 2.PDFを動的に生成 3.レスポンスにPDFを返す という流れであれば、この方法は無理です。 リクエストとレスポンスの流れに注意して↓の記事を読んでみてください。 http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet16/aspnet16_01.html | ||||||||
|
投稿日時: 2004-02-14 15:50
「エラーがでてしまします」ではなく、「**というエラーがでます。[エラー文のコピー]」という書き方をしていただきたいですね。でないと、想像でしか答えられないし、補完の要求で必要以上に長くかかりますから。
結局損をするのは「自分」であることを、よく認識してください。 HttpServer.Transferって、この後のコードは実行されないと思いますよ。HttpResponse.Redirectだったかもしれませんが、「なぜ実行されないんだろう」と悩んだ記憶があります。 | ||||||||
|
投稿日時: 2004-02-14 17:03
質問の仕方がおかしくてすみません。
行き詰まった状態を詳しく書くようにします。 現在のページの実行が終了してなかったために出たエラーだと思ったのは、 ある動作で新しいウィンドウを開いて、そのPage_Load()の中でさらに 違うページを開こうとしていたからです。 そもそも基礎がきっちりしていないので、 教えていただいたASP.NETによるWebアプリケーション実践開発講座を 全部読んでみます。 リンクで<a href="http://AAA.pdf">リンク</a>を思い浮かべましたが PDFを動的に生成したあとなので、javascriptのwindow.openerみたいなのを 書くと思っていたので、それについて調べていました。 Heさん、Jittaさんありがとうございました。 |
1