- - PR -
Acrobat Reader7.0で、PDFがブラウザ内に表示されない?
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-08-18 19:43
Webアプリケーションで、作成したPDFをブラウザに表示する
処理があるのですが、Acrobat Readerを5.1から7.0にアップデートしたら 以前はブラウザ内に表示されていたPDFが、ブラウザ内に表示されず Acrobat Readerが立ち上がりその中に表示されるようになりました。 また出力時には、 response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "inline; filename=hoge.pdf"); と指定しています。 クライアントのAcrobat Readerの設定は、「PDFをブラウザに表示」にチェックが はいっており、HTMLからPDFへ<a>タグで遷移するなら、ブラウザ内に表示されます。 何か解決方法ございますでしょうか? |
|
投稿日時: 2005-08-21 14:34
Headerで、inlineを指定しているようですが
このあたりの情報をいじると動きが変わりませんか? ところで、Acrobat Readerに「PDFをブラウザに表示」なんて設定あったんですね。 しらなかったです。 |
|
投稿日時: 2005-08-24 14:39
失礼、inlineをattachmentに変えても
ダウンロードダイアログがでてきちゃいますね。 通常、たけさんのやり方で出来そうなのに。 |
|
投稿日時: 2005-08-25 15:01
簡単なサーブレットを作って試してみました。
サーバはTomcat5.0.30 ブラウザはIE6(WinXP SP2)、FireFox1.0.6 Adobe Reader 7.0.1 の環境では、以下のコーディングでPDFをブラウザ内に表示します。 Content-Dispositionをinlineでなくattachementにするとダイアログが 表示されます。ので、私の環境では期待どおりに動作しています。 もし、期待どおり動作しないソースが私のソースと同じとすると、後は PDFの中身によるのでしょうか? ひとつひとつ切り分けをして行き、是非解決したいですね。 hoge.DownloadServlet.java --- private void doTask(HttpServletRequest reqest, HttpServletResponse response) throws ServletException, IOException { try { File f = new File("c:/temp/a.pdf"); int size = (int)f.length(); BufferedInputStream bin = new BufferedInputStream(new FileInputStream(f)); byte[] buff = new byte[size]; response.setContentLength((int)size); response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "inline; filename=hoge.pdf"); //response.setHeader("Content-Disposition", "attachment; filename=hoge.pdf"); OutputStream out = response.getOutputStream(); int length = -1; while ((length = bin.read(buff)) != -1) { out.write(buff, 0, length); } bin.close(); out.flush(); out.close(); } finally { } --- 起動するためのJSP index.jsp -- <%@ page contentType="text/html; charset=Shift_JIS" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <HTML><HEAD><TITLE>おためしぴょん</TITLE> <BODY> <FORM NAME="download" method="POST" action="<%= request.getContextPath() %>/hoge/hoge"> ボタンを押すとPDF <INPUT TYPE="submit" value="いけ"> </FORM> </BODY> </HTML> -- |
|
投稿日時: 2005-08-31 14:58
最初の投稿者と同じ状況かどうかは分かりませんが、Acrobat Reader 7.0xのみ
ブラウザ内表示されない現象が発生しました。 【調査結果】 Acrobat Reader 7.0xのみ、HTTPのヘッダ内で、 Content-Type:application/pdf ; charset=Shift_JIS のように、Content-Typeに文字セットの追加指定が行なわれていると、ブラウザ 内表示が行なわれないようです。 Content-Type:application/pdf のみであれば、ブラウザ内に表示されます。 当方の環境では、ソースコード上に response.setLocale(Locale.JAPAN) があると、Content-Typeに文字セットの追加指定が入ってしまっていたため、この コードを取り除く事で現象を回避しました。 このコードがあると、 response.setContentType("application/pdf"); としても、ヘッダには文字セットの追加指定が行なわれてしまうようです。 setLocale()の削除により、ヘッダ内からContent-Language指定が消えるので、 必要であれば response.setHeader("Content-Language", Locale.JAPAN.toString()) 等のコードを追加した方が良いと思います。 【テスト環境】 JDK1.4.2_06 / Apache 2.0.52 / Tomcat 4.1.31 IE6.0(WindowsXP Pro SP2) / Acrobat Reader 7.0.3 |
|
投稿日時: 2005-10-03 19:41
response.setContentType("application/pdf")
か response.setContentType("application/pdf; name=hoge.pdf"); の違いで発生しますね。 後者の方は、ブラウザ内に表示されません。 しかし、前者で作ってしまうと保存するときにファイル名が指定されてなくなってしまう。 これって解決方法ありますか? |
|
投稿日時: 2007-11-19 15:17
過去記事を検索していた所、似た様な議題でしたので
こちらに再投下しました。 クライアントによって現象が発生したりしなかったりで、 非常に回答に困っています…結構緊急状態でして…。 【現象】 IE6では、ブラウザへのPDF表示が可能。 IE7だと、表示されるクライアントとされないクライアントがある。 また、表示されないものも8割方表示不可能なだけで、 全く表示が出来ない訳ではない。 なお、IE7の設定としてポップアップは「常に新しいタブ〜」に 設定してある。 ウィンドウに設定だと問題はないとの話だが、Vistaについては 情報不足のため未確認。 【環境】 クライアントOS:Windows XP Professional SP2またはWindows Vista AP:IBM WebSphere base v6.1 Webサーバ:Apache 2.0.52 サーバOS:RedHat Enterprise Linux 4 ブラウザ:IE6 SP2、IE7 言語:Java1.5.0(IBM) Adobe:7.0または、8.0 IE7における表示が出来ない場合の動作なのですが、 新規タブが一度は立ち上がるのですが、それが落ちてしまい そのまま処理落ちします。 ところが、当方の環境(XP SP2)にて動作させると処理落ちすることもなく 正常にPDF表示がされる。といった状態です。 自分の環境では、IE6 SP2にて元々確認をしており、 この現象が発生したとの報告後、IE7をインストールし 動作させた所、処理はIE6時と同様に可能でした。 しかし、お客様先のVista&IE7、社内メンバーのマシン(XP2 SP&IE7)では 正常に処理出来ない場合があったり、なかったりと 非常に不安定な挙動をしています。 また、タブ落ちしているからといって処理エラーが起きている ということもないようです。 ※サーバのログにて確認。 Adobeの詳細なバージョンも知りたいのですが、 当方自体が確認できる状態ではないのであくまでも 大枠の情報からの推測になるのですが…。 また、Adobeのサポートデータベースで報告されている点を 確認できていないため、こちらの可能性も否定は出来ないのですが…。 http://support.adobe.co.jp/faq/faq/qadoc.sv?230396+002#anc_a-6 http://support.adobe.co.jp/faq/qadoc/AJ25.nsf/900f7bf03cd385244925696900084026/e3304fca84c603784925727a000bc541?OpenDocument 多分違う様な気がしています・・・ 環境もきちんと確認出来ていないので、下手な事も言えないのですが…。 ちなみに、Javaでの出力処理は以下です。 response.setContentType("application/pdf"); response.setContentLength(reportToPdf.length); OutputStream ouputStream = response.getOutputStream(); ouputStream.write(reportToPdf, 0, reportToPdf.length); ouputStream.flush(); ouputStream.close(); 既存に倣って処理しているつもりですが…。 コードよりも環境周りの気がしております。 IE7について、MSにも問合せてみましたが無償サポなので 有償で聞いてくれとの事で…現状、勝手な行動も出来ないので 有償サポには問合せていない次第です。 ※どなたか問合せた事のある方、いらっしゃいますか? 似た現象、またはこの様な現象に遭遇したことがある方 何かしら情報をお願い致します。 |
|
投稿日時: 2007-11-19 23:55
自己レスでっす。
やはり環境が中途半端なだけに原因がはっきりしないとこですかね…。 何かしらヒントになりそうな事象でもあれば聞きたかったとこですが。 AdobeのアップデートやIEのアドオン、フィッシングの設定、 他色々な記事等を参考に試しましたが、一向に原因の究明には至れず…。 悔しいとこです。 明日一日でそれなりの調査結果を出さねばならないのですが、 決定打に繋がるものがわからないです。う〜ん。 MSの有償に聞くのも、業務都合上、今は出来る範囲で調べるという方向です。 悩んでいても仕方がないので、明日一日、調査しきって それなりの答えを出したいと思います。 |