- PR -

PDFが別画面に表示されてしまう

投稿者投稿内容
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-08-15 16:44
時間がかかりましたが自力解決しましたので報告します。

AcrobatReader6.0.1以降、
どうやらHTTPヘッダ内のContent-Typeは無視しているっぽいです。
拡張子を参照しているらしく、ダウンロードサーブレットのURLを
downloadservlet.pdf
としてみると、ブラウザ内にPDFを表示することに成功しました。

しかし、Content-Dispositionも無視しているらしく
上記のサーブレットで保存を試みると
ファイル名がdownloadservlet.pdfになってしまいます。

そこでdownloadservlet.pdfを任意.pdfと呼び出し、
web.xmlにてサーブレットのマッピングを
<servlet>
<servlet-name>DownLoadServlet</servlet-name>
<servlet-class>sample.DownLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownLoadServlet</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
としてやることで
保存ファイル名を任意.pdfにすることが出来ました。

以上、報告まで。
ほげ
会議室デビュー日: 2004/08/07
投稿数: 10
投稿日時: 2007-05-30 17:09
同様の現象で悩んでいます。

ウィンドウ内にPDFを表示したいのですが、
Acrobat Readerが別に起動してそこに表示されてしまいます。

Acrobat Readerの設定のPDFをブラウザに表示にチェックが入っています。

URLをxxx.pdfにすれば良いそうですが
それはどのように指定すればよいでしょうか?

また、struts1.1を使用していて画面遷移はstruts-config.xmlに
xxx.doというように指定して、対応するサーブレットが起動します。
この場合、どのようにURLを.pdfにできますでしょうか?

環境は
WinXP SP2
IE 6.0 SP2
Acrobat Reader 7.09
です。

どうぞ、同じような経験のある方、ご意見ください。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-30 17:47
引用:

xxx.doというように指定して、対応するサーブレットが起動します。


xxx.pdfというように指定して、対応するサーブレットを起動してはいかがでしょうか。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2007-05-30 19:01
引用:

URLをxxx.pdfにすれば良いそうですが


自分の投稿で書きましたがweb.xmlで指定します。

<servlet>
<servlet-name>DownLoadServlet</servlet-name>
<servlet-class>sample.DownLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownLoadServlet</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>

こうです。
ほげ
会議室デビュー日: 2004/08/07
投稿数: 10
投稿日時: 2007-05-31 13:36
ご返答ありがとうございます。

でもお聞きしたかったのは、Strutsでの設定方法だったりします。
Strutsでは、xxx.doというようにURLを指定して、それに対応したアクションが
起動します。なのでurlをxxx.pdfにどのように指定しようかと思いました。

ただ、その画面遷移先にjspなどを指定できるので、そこにpdfを指定すればよいかもしれません。(まだ未確認)

そこで、そもそも通常のサーブレットでできるのかということで
教えて頂いた方法でやってみました。
でも、やっぱり結果は同じでした。

そこで、ただのpdfファイルへのリンクを作成しました。
これも、結果が同じ。(別途、Acrobat Readerが起動します)

他になにかチェック項目など、ございますでしょうか?
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-05-31 13:55
引用:

ほげさんの書き込み (2007-05-31 13:36) より:
でもお聞きしたかったのは、Strutsでの設定方法だったりします。
Strutsでは、xxx.doというようにURLを指定して、それに対応したアクションが
起動します。なのでurlをxxx.pdfにどのように指定しようかと思いました。



Strutsでも同じですよ。
Strutsでは一般的に*.doをorg.apache.struts.action.ActionServletにマッピングしますが
そこを変えてやればよい、という話。
既存との組み合わせもあるでしょうから*.doも*.pdfもActionServletにマッピングすればよいのではないでしょうかね。
ほげ
会議室デビュー日: 2004/08/07
投稿数: 10
投稿日時: 2007-05-31 17:30
>既存との組み合わせもあるでしょうから*.doも*.pdfもActionServletにマッピングすれ
>ばよいのではないでしょうかね。
なるほど〜。*.pdfもActionServletにマッピングすることで
表示されているURLは、〜.pdfになりました。
ありがとうございます。

しかし、環境や設定等も問題もあるようで
いぜん、ブラウザ内には表示されません。
その他、チェック事項、どうようの現象の方などいらっしゃいますでしょうか?
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2007-05-31 19:11
Content-Dispositionがattachmentになっているんじゃないんですか?
inlineにする必要があります。

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