- PR -

PDFを画面に表示しないようにするには

投稿者投稿内容
ゆき
常連さん
会議室デビュー日: 2003/10/23
投稿数: 21
投稿日時: 2005-03-28 10:28
こんにちは。Java(JSP)でWeb画面を開発しておりますが、HTMLについて、困っていることがあります。
「TEST」リンクをクリックすると、PDFファイルを保存するダイアログを開くようにしたいのですが、どうしても画面に直接PDF画面(Acrobatの画面)が表示されてしまいます。
<META>タグの記述を工夫すればよいのか、それとも無理なのか、検討もつきません。
どなたかご存知の方がいらっしゃいましたらご教授下さい。
よろしくお願い致します。

★環境
IE6.0(SP1)、Acrobat5.0、JDK1.4.2

★HTMLの例
<HTML>
<HEAD>
</HEAD>
<BODY>
<A HREF="test.pdf">TEST</A>
</BODY>
</HTML>
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-03-28 10:38
詳しく見てないですが、この辺の話しが参考になりませんでしょうか。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=18739&forum=12
ゆき
常連さん
会議室デビュー日: 2003/10/23
投稿数: 21
投稿日時: 2005-03-28 13:09
(株)ぽちさんありがとうございます。
教えていただいたスレッドを見たのですが、不勉強でまだ良く理解できておりません。
少し時間がかかります。

いろいろ試していて、
CSVデータについて、同様にリンクを作成したところ、
PDFと同じようにCSVの中身が画面に表示されてしまっていたのですが、
以下のようなMETAの記述を追加したら、保存のダイアログが出てくるようになりました。

(前略)
<META http-equiv="Content-Type" content="text/octet-stream">
(中略)
<A HREF="test.csv">TEST</A>

このようなHTMLだけを直すような、容易な方法はあるでしょうか。
よろしくお願い致します。

(別の会議室に移動した方が良い場合は、ご指摘下さい。)
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-03-28 13:26
どもでふ。がると申します。
初手から恐縮ではあるのですが。原則的には、ゆーじんさんの希望の
とおりにどうにかするのは「無理」です。

[理由]
HTTPはサーバ/クライアントシステム形態です。
で。
JSPにせよCGIにせよ、そこら辺は「サーバ側で動いている」システムです。
そういったサーバ側のシステムは、極論すれば「何らかのデータを出力している」
だけ、です。
その「何らかのデータ」を「どんな風に処理するのか」は、純粋に
クライアントの責任下で行われます。
もちろん、ある程度の指針が必要であったりすることから、サーバ側は
Content-typeというヘッダなどを用いて「データの形をクライアントに
伝達する」程度のことは行うのですが。
極論からいえば、クライアントの設定しだいで「CSVが入ってきたら
メモ帳で表示してExcelファイルが入ってきたらStarOfficeで処理する」
という動作もありえます。
で、原則的に「サーバ側ではクライアントのそういった具体的な設定までは
制御できない」ために、ゆーじんさんのおっしゃっている「PDFファイルが
入ってきたらPDFファイルを保存するダイアログを開くようにしたい」という
のは、きわめて難しくなります。
[/理由]
ちなみに、「何が入ってきたらこう挙動する」のうち、「何が入ってきたら」
の何の部分を判定する方法も複数ありまして。

・HTTPレスポンスヘッダのContent-typeから判断:いっちゃんまとも
・URLのファイル拡張子から判断:よくありますがセキュリティ的に危ないケースも
・中身を見て判断:ある意味一番怖いです。たまに見かけますが…

こういった複数の状況があるので、非常に困難かと思われます。

正直なところ、大抵のブラウザの場合「右クリックして"対象URLをファイルで保存"」
という機能がついてますので、Textコメントなどで誘導してユーザにそのように
操作させるのが一番無難だとは思うのですが。

上記の回答(にすらなってませんが(苦笑))が望まれているものとは
程遠いことは承知で、「HTTPというプロトコルがもつ本来の状況」を
少しでも伝えられれば、と思い、書いてみました。

もし余計なお世話でしたら、心からお詫びいたします。
ゆき
常連さん
会議室デビュー日: 2003/10/23
投稿数: 21
投稿日時: 2005-03-28 13:47
がるがるさんありがとうございます。
とても勉強させて頂いております。
ユーザーに右クリックを促す方向でいきたいと思います。

サーバーのデータをどのようにクライアントが処理するか、ということは、「クライアントの設定」次第ということでしたが、もう少し詳しく言うと、ブラウザ(今回はInternetExplorer)の設定ということになるのでしょうか?
不勉強で申し訳ありませんが、どのような設定が、クライアント側のデータの処理方法に影響するのでしょうか?
今後のために理解したいと思います。
よろしくお願い致します。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-03-28 14:13
ああ、すいません。

てっきりサーバ側で何かプログラム(servlet)が動いているのを前提に
お話しされているのかと思っていました。
ゆき
常連さん
会議室デビュー日: 2003/10/23
投稿数: 21
投稿日時: 2005-03-28 14:26
(株)ぽちさん、ありがとうございます。
サーバーでServletやBeanは使っているのですが、高度なことを自分ができないだけでして、
お恥ずかしいことです。。
f^−^;
HttpReponseを使って、データを返すことにより、「保存ダイアログを表示する」ということができるのかどうか、まだ試してみるまでには至っていない、という次第です。
JSPでHTMLの細工をするだけで何とかなったら、と安易に考えてしまいました。
もっと勉強して理解できるようにしようと思います。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-28 14:32
>ゆーじんさん
Windowsならコントロールパネルでフォルダオプションの設定で
ファイルタイプの設定を行えば挙動が変わります。
拡張子に対してアクション・アプリケーション・パラメータを設定します。

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