- - PR -
Strutsで新しいウィンドウにPDFを表示させる方法
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-09-15 16:57
Struts初心者です。どうしてもわからないので投稿します。
PDFをクライアントにダウンロードして別ウィンドウに表示させたいのですが、 空白ウィンドウが立ち上がり、PDFが表示されません。 Tomcatのコンソールやログには何も表示されません。 環境はTomcat4.1.30+Struts1.1です。 もしご存知の方がおられましたら、ご指摘お願いします。 test.JSPのボタンはこんな感じ。 <input type="button" value="てすと" onClick="window.open('<html:rewrite page='/testPrintAction.do'/>')"> struts-config.xmlはこんな感じです。 <action input="/test.jsp" path="/testPrintAction" type="TestPrintAction" validate="false"> </action> TestPrintActionクラスのexecuteメソッドはこんな感じです。 response.reset(); response.setContentType("application/pdf;"); response.setHeader("Content-Disposition", "inline; filename=" + "test.pdf"); DataOutputStream out = new DataOutputStream(response.getOutputStream()); FileInputStream in = new FileInputStream("C:/test.pdf"); byte [] buffer = new byte[4096]; int readbyte; while ((readbyte = in.read(buffer)) != -1){ out.write(buffer,0,readbyte); } in.close(); out.flush(); out.close(); return null; | ||||
|
投稿日時: 2004-09-15 17:09
TestPrintActionクラスが実行されているのは確認されたのでしょうか。
以下の部分から生成されるHTMLソースは期待通りになっていますか? <input type="button" value="てすと" onClick="window.open('<html:rewrite page='/testPrintAction.do'/>')"> | ||||
|
投稿日時: 2004-09-15 17:23
早速の返信ありがとうございます。
Actionクラスの途中にログなどでログをはくと出力されます。 生成されるHTMLは下記のようになっています。 <input type="button" value="てすと" onClick="window.open('/test/testPrintAction.do')"> また、空白ウィンドウのソースを表示すると次のようになっています。 <html><body leftmargin=0 topmargin=0 scroll=no> <embed width=100% height=100% fullscreen=yes src="http://localhost:8080/test/testPrintAction.do"></body></html> | ||||
|
投稿日時: 2004-09-15 20:47
まず、問題を切り分けましょう。
・新しいウィンドウを表示させず ・JavaScriptを使わずに そのアクションを呼び出したらどうなりますか? | ||||
|
投稿日時: 2004-09-16 11:00
下記のようなJSPで自画面に表示させるとうまくいっているようです。
(複数のActionがあるのでfunctionで切り分けています。) また、別ウィンドウの場合、なぜかTestPrintActionのログが2回出てしまいます。 ここらへんが怪しいのでしょうか? <html:form action="/anotherAction"> : <input type="button" value="てすと" onClick="submitForm('testPrintAction')"> : </html:form> : function submitForm(action){ var form = document.forms[0]; form.action = action + ".do"; form.submit(); return false; } | ||||
|
投稿日時: 2004-09-16 11:26
testPrintAction.doをブラウザのURLに直接打ち込んだら出るのかなー?
出たら、rewriteタグ使ってるところをハードコーディングで指定 してみては? | ||||
|
投稿日時: 2004-09-16 13:26
あいつーです。
AdobeReaderのバージョンによってはGETじゃ表示されずにPOSTだと表示される、 なんてこともあったりしますが。 確か5.xだと表示されなかったような…。 | ||||
|
投稿日時: 2004-09-16 13:46
以下のようにPOSTすれば別画面に表示されるのではないでしょうか?
| ||||
