- PR -

作成したPDFを新たな画面に表示

1
投稿者投稿内容
death
会議室デビュー日: 2005/06/15
投稿数: 15
投稿日時: 2006-10-12 19:30
作成したPDFを新たな画面に表示する方法はありますか。
strutsで実装しています。javaScriptは使用しない方法で。
(window.open()を使用すると入力値のチェックをして駄目なら
同じ画面に戻るように実装しているのですが、新しく開いた
画面に処理が戻ってしまいます。)



// contentTypeを出力
response.setContentType("application/pdf");
// ファイル名の送信(attachment部分をinlineに変更すればインライン表示)
String fileName1 = sentakuForm.getChohhyouName() + ".pdf";
String fileName2 = new String(fileName1.getBytes("Shift_JIS"),"8859_1");

response.setHeader("Content-disposition", "inline; filename=\""+ fileName2 +"\"");

try{
  br = new BufferedInputStream(new FileInputStream(tempPdfFile));

  // ファイル内容の出力
  out = response.getOutputStream();

byte[] buffer = new byte[8192];
int rsize;
while ((rsize = br.read(buffer)) != -1) {
out.write(buffer, 0, rsize);
}

  }finally{
    out.close();
 }

こんな感じで実装しているのですが、ボタンを押した画面に表示されてしまいます。
新しい画面を開いて表示したいのですが。
よろしくお願いします。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-10-12 20:39
ムリじゃね?

今やろうとしていることが、サーバーからクライアントのUA(ブラウザ)の状態を変更することにあたるから。

したがって、妥協点を見つけるしかないと思います。
・同じ画面で我慢
・window.open()で新しいウインドウを開き、そこに表示。但しエラーのときは、「エラーがあったよ」と表示し、閉じるボタンだけ用意、またはウインドウを閉じざるを得ない状況にしてしまう(リンク先やボタンが何もない、ただメッセージが表示されてるだけ)。

参考までに。
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2006-10-13 13:05
javaScriptを使用しない方法となると思いつかないです。
でもWindow.openを使用しようとしていたみいなのは謎。

ということで、javaScriptを使用しての案ならば。
1.入力チェックをAJAXなどを使用して確認。
2.OKの場合はPDF表示処理、NGの場合はエラー表示。

1.をservletにして、
2.で再表示の際にOKならonloadでPDF表示処理
ってのもあり。
1

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