maeda
aaake****@gmail*****
2009年 9月 1日 (火) 20:55:46 JST
maedaです。 StringResourceStreamを使用してのPDF表示について質問なのですが PDF作成ライブラリを使用して吐き出されたByteArrayOutputStreamでPDF表示を行いたいのですが 下記のソースコードを実行すると ページ数は正しいのですが白紙のPDFが表示されてしまいます。 なにか足りない処理などありますでしょうか? setCharsetで指定している文字コードはUTF-8です。 /** * * 印刷ボタン */ private SubmitLink printLink = new SubmitLink("printLink") { @Override public void onSubmit() { //PDF作成処理 ByteArrayOutputStream stream = testService.printLink(); StringResourceStream rs = null; rs = new StringResourceStream(stream.toString(),"application/pdf"); rs.setCharset(Charset.forName(getResponse().getCharacterEncoding())); getRequestCycle().setRequestTarget(new ResourceStreamRequestTarget(rs)); } }; 下記のような感じで getResponseしてPDFを出力すると正しく表示されるのでPDFは問題ないと思うのですが・・・。 /** * * 印刷ボタン */ private SubmitLink printLink = new SubmitLink("printLink") { @Override public void onSubmit() { ByteArrayOutputStream stream = testService.printLink(); // responseを取得 WebResponse response = (WebResponse) getResponse(); // ヘッダー設定 response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "inline"); // responseのOutputStreamにPDFのByteArrayOutputStreamをセット try { OutputStream os = response.getOutputStream(); os.write(stream.toByteArray()); os.close(); }catch (Exception e) { throw new RuntimeException(e); } //responseをセット setHeaders(response); } };