- PR -

ASP.NETでのPDFダウンロード時のエラーについて

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2009-04-10 09:09
いつもお世話になります。

現在ASP.NET(VB.NET) 2005 開発環境 WINXP
(PDF出力にはitextを使用しています。)
にて開発を行っています。

症状
 現在ボタン押下時にGIFファイルをitextにて
 PDFファイル化しダウンロードさせる機能を作成
 しました。(下記にコード)

 〜ボタン押下時の処理〜
 Dim pageSize As New Rectangle(850, 465)
Dim document As Document = New Document(pageSize)
PdfWriter.getInstance(document, New FileStream(Server.MapPath("~")       & "\scanimg\" & "Image.pdf", FileMode.Create))
document.open()
Dim gif As Image = Image.getInstance("GIFのパス")
gif.scaleAbsolute(850, 465)
gif.setAbsolutePosition(0, 10)
gif.scaleToFit(850, 465)
document.add(gif)
document.close()
Response.ContentType = "Application/pdf"
Response.AddHeader("Content-disposition", "attachment; filename=Image.pdf")
Dim FilePath As String = Server.MapPath("~") & "\scanimg\"                         & "Image.pdf"
Response.WriteFile(FilePath)
Response.End()

 上記のようにPDFファイルを作成しダウンロード出来るようにました。
 上記のコードで会社の環境では開発環境(xp)、実行環境(winsv2003)
 ともに問題なくダウンロードする事が可能です。
  しかし客先に開発物を持っていき、実行環境(winsv2003)にプログラム
 をセットし同じように実行したところ、下記エラーになってPDFファイルが
 開けませんでした。(ただし、ダウンロードの"開く"、"保存"などの画面
 は出力され"保存"としてデスクトップ等に保存し,そのファイルを開くと
 問題なくPDFファイルは開きます。→"開く"のときのみおかしい。)

 エラー内容:この文章を開くときにエラーが発生しました。このファイルが
       みつかりません。
       (上記エラーはacrobat reader が開いた時に出力されます。)

  また、客先に開発環境を持ち込み、クライアントからその開発環境をサーバー
  にみたてて接続し、上記動作をためしてみたところ、問題なく動作しました。

 上記より客先のサーバーの設定(IIS等?)が悪いのではないかといろいろと調べて
 いるのですが、まだ有効なてだてが見つかりません。

 わかる方がおられましたら、よろしくお願いします。
 自分も引き続き調査のほうを続けてみます。

 以上
turutosiya
常連さん
会議室デビュー日: 2003/06/10
投稿数: 49
お住まい・勤務地: 東京都
投稿日時: 2009-04-10 10:06
これなのではないでしょうか?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=16511
http://support.microsoft.com/default.aspx?scid=kb;ja;436605

以下、引用です。
引用:
Internet Explorer を使用して下記条件を満たすファイルを開いた場合、ファイル名が見つからない内容のエラーが発生し、ファイルを開くことができない場合があります。
○ ダウンロード対象となるファイルに Content-Disposition:attachment ヘッダーを付加している
○ Cache-Control:no-cache ヘッダーなどを使用して、ファイルのキャッシュを行わない設定をしている


_________________
Toshiya Tsuru
http://d.hatena.ne.jp/turutosiya/
1

スキルアップ/キャリアアップ(JOB@IT)