5 返信 最新の回答 日時: Nov 30, 2007 9:08 AM ユーザー:(hisapone)

    AdobeReader8でファイル保存が出来ない

      JavaのBufferedOutputStreamクラスを使ってPDFを表示させています。
      通常の保存ボタン(フロッピーのアイコン)を押して、ローカルにダウンロードさせようとしたところ、ファイル名などを聞かれる画面が出てこず、ファイルの保存ができません。

      以下の環境に限って発生します。
      ・Webサーバ:Windows
      ・Adobe Reader 8 

      PDFを配置しているサーバがUNIXの場合は、Adobe8でも問題無しです。(アプリケーションは同じものを載せています)

      同様の現象を見たことのある方、いらっしゃいますでしょうか。
        • 1. Re: AdobeReader8でファイル保存が出来ない
          Level 1
          どんな環境かはおおよそ見当がつきますが、確認は必要ですね。

          > JavaのBufferedOutputStreamクラスを使ってPDFを表示させています。

          どこで使って、何に表示させているんでしょうか?

          > ・Webサーバ:Windows

          WindowsはOSに過ぎません。httpサーバと、アプリケーションサーバは何ですか?

          > PDFを配置しているサーバがUNIXの場合は

          それは何のサーバですか?
          また、配置とは具体的にどういう状態を指しますか?

          > Adobe8でも問題無しです

          「でも」とは何と比較しての話ですか?
          他、クライアント環境の詳細は?
          • 2. Re: AdobeReader8でファイル保存が出来ない
            Level 1
            早速のご返答、有難うございます。

            インターネット上で、PDFファイル(帳票)を
            閲覧させるシステムなのですが、
            ブラウザに直接PDFファイルを表示させるのではなく、
            PDFのリンク先のJSP(Servlet)内で
            BufferedInputStreamクラスを呼び出して
            ブラウザ上に表示させています。

            【ソースの一部】
            response.reset();
            response.setContentType("application/pdf");
            response.setHeader("Content-Disposition", "inline; filename="+filename);
            byte[] buf = new byte[5120];
            int nSize;
            BufferedInputStream in = new BufferedInputStream(new FileInputStream(pdfFile));
            BufferedOutputStream bout = new BufferedOutputStream(response.getOutputStream());
            for(nSize = in.read(buf); nSize > 0; nSize = in.read(buf))
            bout.write(buf, 0, nSize);
            in.close();
            bout.flush();
            bout.close();
            response.flushBuffer();

            【サーバ】
            OS:Windows2000
            httpサーバ:SunOne(iPlanet6.0)
            アプリケーションサーバ:WebLogicServer6.1J

            【クライアント】
            OS:WindowXP
            ブラウザ:IE6.0
            Adobe:8
            ⇒7以下では、本障害は起こらない。

            以上、よろしくお願い致します。
            • 3. Re: AdobeReader8でファイル保存が出来ない
              Level 1
              早速のご返答、有難うございます。

              インターネット上で、PDFファイル(帳票)を
              閲覧させるシステムなのですが、
              ブラウザに直接PDFファイルを表示させるのではなく、
              PDFのリンク先のJSP(Servlet)内で
              BufferedInputStreamクラスを呼び出して
              ブラウザ上に表示させています。

              【ソースの一部】
              response.reset();
              response.setContentType("application/pdf");
              response.setHeader("Content-Disposition", "inline; filename="+filename);
              byte[] buf = new byte[5120];
              int nSize;
              BufferedInputStream in = new BufferedInputStream(new FileInputStream(pdfFile));
              BufferedOutputStream bout = new BufferedOutputStream(response.getOutputStream());
              for(nSize = in.read(buf); nSize > 0; nSize = in.read(buf))
              bout.write(buf, 0, nSize);
              in.close();
              bout.flush();
              bout.close();
              response.flushBuffer();

              【サーバ】
              OS:Windows2000
              httpサーバ:SunOne(iPlanet6.0)
              アプリケーションサーバ:WebLogicServer6.1J

              【クライアント】
              OS:WindowXP
              ブラウザ:IE6.0
              Adobe:8
              ⇒7以下では、本障害は起こらない。

              以上、よろしくお願い致します。
              • 4. Re: AdobeReader8でファイル保存が出来ない
                Level 1
                > PDFを配置しているサーバがUNIXの場合

                てのがどんな場合か不明なままですが、環境は大体分りました。
                うまく行く場合、行かない場合をマトリクスにまとめれば、何が関係しているか明確になりますから、そこから手掛かりが見えてくるんじゃないでしょうか。

                でもどちらかというと、atmarkitのjava会議室の方が向いているネタかと思います。
                • 5. Re: AdobeReader8でファイル保存が出来ない
                  Level 1
                  ご回答ありがとうございます。

                  >でもどちらかというと、atmarkitのjava会議室の方が向いているネタかと思います。

                  ソースは変えていないのに、AdobeReaderを8にしたことで、保存が出来なくなること、Adobeが8でも、OSが異なると傷害にはならないこと、から、
                  Adobeの最新版とOSとの相性、もしくはAdobe最新版の仕様に原因があるかと判断し、こちらに投稿させていただいた次第です。

                  AdobeReaderの有償サポートを購入し、技術サポートを受けてみることにします。

                  ありがとうございました。