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

Back to archive index

Hideyuki TAKEUCHI webma****@chime*****
2011年 8月 25日 (木) 16:21:14 JST


たけうちです。

うちでは、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
-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: InlineAttachedResourceStreamRequestTarget.java
다운로드 



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