[Wicket-ja-user 570] Re: 動的に作ったPDFを表示させたい

Back to archive index

you yamamoto youy7****@gmail*****
2011年 8月 25日 (木) 17:18:29 JST


たけうちさん。

山本です。お返事ありがとうございます。

 yigaさんのソースを参考にしていただいたら、
なんとかできました。

たぶん、たけうちさんがやられてることとだいたいの点で同じなのかなとおもうのですが。。

ポイントとしては
レスポンスのヘッダ情報をinlineにした状態で、
getRequestCycle().setRequestTarget()を呼ぶ。

ということでしょうか。

参考クラスまでいただいて本当にありがとうございました。

以上、よろしくお願いします。



2011年8月25日16:21 Hideyuki TAKEUCHI <webma****@chime*****>:

> たけうちです。
>
> うちでは、ResourceStreamRequestTargetの代わりに添付のようなクラスを
> 作成してPDFをブラウザでインライン表示させています。
>
> ResourceStreamRequestTargetとの違いはContent-Dispositionヘッダに
> "attachement; filename=~"でかき込む代わりに、"inline; filename=~"に
> するようにしているだけです。
>
> --
> たけうち
>
> (11/08/25 15:39), you yamamoto wrote:
> > 金谷さん。
> > 山本です。早速のお返事ありがとうございます。
> > 例外の理由はなんとな〜くわかりました。
> > が、どこをどうしたらよいのかわからなくて困っていますが。。。
> > 金谷さんが書かれた方法でやってみたこともあるのですが、
> > それだとページ遷移ではなくダウンロードのダイアログがでません?
> > ダイアログを出さないで、ページとしてPDFを表示したいのです。(印刷のため
> > に。)
> > 以上、よろしくお願いします。
> >
> > 2011年8月25日15:16 Atsushi Kanaya <todoa****@gmail*****
> > <mailto:todoa****@gmail*****>>:
> >
> >     山本さん
> >
> >     金谷です。
> >     リダイレクト先を出力するレスポンスを出力完了しているにも関わらず
> >     更にPDFも出力しようとしているためエラーが出ているのかと思います。
> >
> >     私の手元の実装ではこんな感じのことをやっていました。
> >     ご参考になれば幸いです。
> >
> >     getRequestCycle().setRedirect(true);
> >     getRequestCycle().setRequestTarget(new
> ResourceStreamRequestTarget(new
> >     AbstractResourceStreamWriter() {
> >     public String getContentType() {
> >     return "application/pdf";
> >     }
> >     public void write(OutputStream out) {
> >     //ダウンロード処理
> >     }
> >     }, "hoge.pdf"));
> >
> >
> >     以上、よろしくお願いします。
> >
> >
> >     2011年8月25日14:29 you yamamoto <youy7****@gmail*****
> >     <mailto:youy7****@gmail*****>>:
>  >      > はじめまして。山本と申します。
> >      >
> >      > 動的に作ったPDFをダウンロードではなく、表示させたいのですが、
> >      > なかなかうまくいかないので、質問させてください。
> >      >
> >      > ここのメーリングリストの過去の投稿を参考にして、
> >      > 以下のようにつくってみたら、PDFを表示することはできたのですが、
> >      > なんか例外が発生してしまっているので、困っています。
> >      > 例外を回避する方法をご存知な方がいらっしゃればおしえてください。
> >      > また、以下の方法よりもいい方法があれば、ご教授くださればとおもい
> >     ます。
> >      >
> >      > Page.html抜粋
> >      > ------------------------------------
> >      >
> >      > <input type="submit" wicket:id="printLink" value="PDF" />
> >      >
> >      > ------------------------------------
> >      >
> >      > Page.java抜粋(コンストラクタの部分)
> >      > ------------------------------------
> >      >
> >      > Button printLink = new Button("printLink"){
> >      > private static final long serialVersionUID = 1L;
> >      > @Override
> >      > public void onSubmit() {
> >      > //動的に作ったPDFがaiueo.pdfというファイル名だとします。
> >      > IResourceStream stream = new FileResourceStream(new
> >      > File("aiueo.pdf"));
> >      > // responseを取得
> >      > WebResponse response = (WebResponse) getResponse();
> >      > // ヘッダー設定
> >      > response.setContentType("application/pdf");
> >      > response.setHeader("Content-Disposition", "inline");
> >      > // responseのOutputStreamにPDFのStreamをセット
> >      > try {
> >      > OutputStream os = response.getOutputStream();
> >      > InputStream in = stream.getInputStream();
> >      > int iData = 0;
> >      > while ((iData = in.read()) != -1) {
> >      > os.write(iData);
> >      > }
> >      > os.close();
> >      > in.close();
> >      > }catch (Exception e) {
> >      > throw new RuntimeException(e);
> >      > }
> >      > //responseをセット
> >      > setHeaders(response);
> >      > }
> >      > };
> >      > form1.add(printLink);
> >      > this.add(form1);
> >      >
> >      > ------------------------------------
> >      >
> >      > 発生する例外
> >      > ------------------------------------
> >      > org.apache.wicket.protocol.http.WebResponse redirect
> >      > 致命的: Unable to redirect to: ?wicket:interface=:6::::, HTTP
> >     Response has
> >      > already been committed.
> >      > org.apache.wicket.protocol.http.WicketFilter doGet
> >      > 致命的: closing the buffer error
> >      > java.lang.IllegalStateException
> >      > at
> >      >
> >
> org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:473)
> >      > at
> >      >
> >
> org.apache.wicket.protocol.http.WebResponse.sendRedirect(WebResponse.java:299)
> >      > at
> >      >
> >
> org.apache.wicket.protocol.http.WebResponse.redirect(WebResponse.java:250)
> >      > at
> >      >
> >
> org.apache.wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:67)
> >      > ------------------------------------
> >      >
> >      > 環境
> >      > ------------------------------------
> >      > tomcat7
> >      > JDK 1.6
> >      > Wicket 1.4.18
> >      > ------------------------------------
> >      >
> >      > 以上、よろしくお願いします。
> >      >
> >      > _______________________________________________
> >      > Wicket-ja-user mailing list
> >      > Wicke****@lists*****
> >     <mailto:Wicke****@lists*****>
> >      > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
> >      >
> >      >
> >
> >     _______________________________________________
> >     Wicket-ja-user mailing list
> >     Wicke****@lists*****
> >     <mailto:Wicke****@lists*****>
>  >     http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
> >
> >
> >
> >
> > _______________________________________________
> > Wicket-ja-user mailing list
> > Wicke****@lists*****
> > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
Download 



Wicket-ja-user メーリングリストの案内
Back to archive index