@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

PDFブラウザ表示時のContent-Typeについて

1
投稿者投稿内容
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-03-17 01:54
response.setContentType("application/pdf");
response.getOutputStream().write(pdfImage);
response.getOutputStream().flushBuffer();

としたとき、

クライアントでパケットキャプチャツールでヘッダを見ると
Content-Type:application/pdf; charset=Shift_JIS
となっています。
charset=XXX が余計にくっついているため、ブラウザインライン
表示に失敗しています(AcrobatReader7/AdobeReader8)。
というか失敗している可能性が高い、というところです。確証取れ
ていないので(但し、charset=XXX のためにブラウザ表示出来ない
話題を Adobe の掲示板や @IT 過去ログで確認済みです)。


ところで、Java 側のコーディングでは、charset=XXX を明示的に付けて
コンテントタイプを発行している箇所は見当たらないのですが、
どこかで誰かがくっ付けているとしたら、一体どこらへんでくっつける
ことが出来るのでしょうか?

プロキシーサーバー?
アプリケーションサーバーの設定?

仮にJava側でやっているとしたら、HttpServletResponse の getOutputStream
をオーバーロードして独自のOUTを返して、Content-Type をキャッチしたら
application/pdf に何かを付け足すなんて芸当も出来るかもしれませんが、
かなり詳細にフレームワークの隅々まで見たのですが、HttpServletResponse
を継承した独自クラスなんぞ見当たりませんでした。

環境:
WAS5.1
SVF
AIX
Java1.4

比較検証には、PDFインライン表示する別システムのヘッダを取得して
見比べました。この「出来る」システムも同一サーバー上で動いてい
ます。フレームワークは異なりますが。

ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-03-21 01:09
解決でし。

サーバーのマニュアル読めば一発なんだろうけど・・・
借り物のサーバーじゃどーしょーも無いです。


autoResponseEncoding="false" にすると、
Content-Type: application/pdf
の後ろに charset=XXX が勝手に付かなくなりました。

この設定の記述場所は、
WEB-INF/ibm-web-ext.xmi

以上


1

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