- PR -

PDFのファイルダウンロード時のadobe Reader 6.0xでの表示について

1
投稿者投稿内容
タカ
会議室デビュー日: 2004/11/19
投稿数: 10
投稿日時: 2004-11-29 22:19
PDFをブラウザからダウンロードする機能を作成しております。(ブラウザはIE、ネスケ7.1など)
Adobe Reader 6.02は起動するが、真っ白なページが表示されるだけで内容が表示されません。ダイヤログから保存ボタンを押すと正常に保存され、表示されます。
また、Adobe Reader 5.Xでは正常に表示されます。
あと、ワードやエクセル、メモ帳ファイルダウンロード時は正常に表示されます。

ソースコードは以下のようにしています。
// contentTypeを出力
FileDataSource fds = new FileDataSource(fileName);
String contentType = fds.getContentType();
response.setContentType(contentType);
//ヘッダーもいろいろ試しました
//response.setHeader("Pragma", "No-cache");
//response.setHeader("Pragma", "public");
//response.setHeader("Cache-Control", "public");
//response.setDateHeader("Expires", 0);など

// ファイル名の送信
response.setHeader("Content-disposition", "inline; filename=\"" + fileName + "\"");

// ファイル内容の出力
ServletOutputStream out = response.getOutputStream();
FileInputStream fin = new FileInputStream(filepath);
int size;
while((size = fin.read(buffer))!=-1) {
out.write(buffer,0, size);
}
fin.close();
out.close();

これに該当するようなページ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=16511
も参照してみましたが、どのように対応してよいのかわかりません。
Adobe Reader 5.xのセキュリィホールなどの問題で、6.0になって何か指定方法が変わったのでしょうか?
どなたか、なんでも結構ですのでご教授くださいますようお願いいたします。

[ メッセージ編集済み 編集者: タカ 編集日時 2004-11-29 22:25 ]
タカ
会議室デビュー日: 2004/11/19
投稿数: 10
投稿日時: 2004-11-30 10:05
自己レスです。

原因は、fds.getContentType();でpdfなどの拡張子に対する正確なMimeType返ってきていないようでcontentTypeに「application/octet-stream」が設定されていました。
Adobe Reader 5.Xでは、「application/octet-stream」でも正常に表示されるようです。

いろいろ試しているうちにこんな簡単なことも気付かなくなってました。
皆様、大変お騒がせしました。

[ メッセージ編集済み 編集者: タカ 編集日時 2004-11-30 10:50 ]
1

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