PDFのダウンロードダイアログで「開く」を選択すると、「この文書を開くときにエラーが発生しました。このファイルが見つかりません。」というエラーが発生します。

文書番号 : 27296     文書種別 : 使用方法     最終更新日 : 2009/08/03
文書を印刷する
対象製品
ActiveReports for .NET 6.0J Professional
詳細
以下のサンプルコードにあるような処理を行う場合、作成されたPDFデータのダウンロードおよび表示動作は、ActiveReportsの機能ではなく、Responseオブジェクト、クライアント環境のブラウザ、Adobe Readerの機能によって行なわれます。

◆サンプルコード(VB.NET)
 Dim rpt As New ReportAssembly.ActiveReport1
 Dim pdf As New DataDynamics.ActiveReports.Export.Pdf.PdfExport()

 ' レポートを作成します。
 rpt.Run(False)

 ' ブラウザに対してPDFドキュメントの適切なビューワを使用するように指定します。
 Response.ContentType = "application/pdf"
 ' ヘッダ情報を設定します。
 ' Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF")
 Response.AddHeader("content-disposition", "attachment; filename=MyPDF.PDF")

 ' PDFの出力用のメモリストリームを作成します。
 Dim memStream As System.IO.MemoryStream = New System.IO.MemoryStream()
 ' メモリストリームにPDFエクスポートを行います。
 pdf.Export(rpt.Document, memStream)
 ' 出力ストリームにPDFのストリームを出力します。
 Response.BinaryWrite(memStream.ToArray())
 ' バッファリングされているすべての内容をクライアントへ送信します。
 Response.End()

◆サンプルコード(C#)
 ReportAssembly.ActiveReport1 rpt = new ReportAssembly.ActiveReport1();
 DataDynamics.ActiveReports.Export.Pdf.PdfExport pdf = new DataDynamics.ActiveReports.Export.Pdf.PdfExport();

 // レポートを作成します。
 rpt.Run();

 // ブラウザに対してPDFドキュメントの適切なビューワを使用するように指定します。
 Response.ContentType = "application/pdf";

 // ヘッダ情報を設定します。
 // Response.AddHeader("content-disposition","inline; filename=MyPDF.PDF");
 Response.AddHeader("content-disposition","attachment; filename=MyPDF.PDF");

 // PDFの出力用のメモリストリームを作成します。
 System.IO.MemoryStream memStream = new System.IO.MemoryStream();
 // メモリストリームにPDFエクスポートを行います。
 pdf.Export(rpt.Document, memStream);
 // 出力ストリームにPDFのストリームを出力します。
 Response.BinaryWrite(memStream.ToArray());
 // バッファリングされているすべての内容をクライアントへ送信します。
 Response.End();

本エラーは、ActiveReportsの使用とは関係なく、一般的に発生するものですが、対処方法としては以下のような内容が考えられます。こちらをお試しください。

  1. サーバ側でファイルのキャッシュを行わない設定になっている場合、本現象が発生する可能性があります。詳細については、マイクロソフト社のサポート技術情報で公開されている、以下の内容をご確認ください。
    Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題
    http://support.microsoft.com/kb/436605/ja


  2. 上記1.の内容とは逆になりますが、過去の事例において、@OutputCacheディレクティブを使用してキャッシュを有効にしている場合、PDFファイルを開く際に同様なエラーが発生するという報告がございました。

    [HOWTO] ASP.NET ページをキャッシュしてパフォーマンスを向上させる方法
    http://support.microsoft.com/kb/315896/ja

    問題となっているWebFormにおいて、@OutputCacheディレクティブを使用している場合には、@OutputCacheを使用しない方法をお試しください。


  3. マイクロソフト社やアドビ社のWebサイトで公開されている、以下の内容をご確認ください。
    [IE] HTTPS URL から Office ドキュメントまたは PDF ファイルを開こうとすると "ダウンロードできません" エラーが発生
    http://support.microsoft.com/kb/812935/ja

    キャッシュファイルが作成できない場合はファイルのダウンロードに失敗する
    http://support.microsoft.com/kb/896219/ja

    [230396]Internet Explorer で PDF ファイルを表示するための設定について(Windows 版 Acrobat 8/Adobe Reader 8)
    http://www.adobe.com/jp/support/kb/ts/230/ts_230396_ja-jp.html

    [225368]PDF ファイルを表示するための Windows 版 Internet Explorer の設定 (Acrobat 7.0)
    http://www.adobe.com/jp/support/kb/ts/225/ts_225368_ja-jp.html


  4. Internet Explorerの設定を変更することで、本現象を回避できる場合があるようです。
    問題となっているクライアント環境のInternet Explorerにおいて、「ツール」→「インターネットオプション」→「セキュリティ」からセキュリティ設定を確認し、セキュリティレベルを「中」以下に設定する方法をご検討ください。


  5. 問題となっているクライアント環境で、ファイアウォール機能が有効になっている場合、一時的に無効にして、現象が再現するかどうかをご確認ください。


  6. クライアント環境のセキュリティソフト等の影響により、ダウンロードしたファイルをそのまま「開く」ことができない場合があるようです。こちらの内容をご確認ください。


  7. 本件のように、Responseオブジェクトを使用してクライアントにPDFデータを送信する場合、データのダウンロード動作はブラウザに、ダウンロードしたデータを開く動作はAdobe Reader等のヘルパーアプリケーションによって行われます。そのため、これらのバージョンや設定等の条件によっては、動作が異なる場合があります。

    原因の切り分けのため、別のクライアント環境から同様の操作を行った場合に、現象が発生するかどうかをお試しください。別の環境で現象が発生しない場合は、前述の条件に違いがないかどうかをご確認ください。
関連情報
キーワード
問題 エクスポート Web

この文書は、以前は次のFAQ IDで公開されていました : 11973