3

レンダリングプラグインを使用して単純なテンプレートをPDFに保存しようとしていますが、何を試しても機能しません。必要なのは、サーバー上のファイルシステム内にファイルを保存し、別のページにリダイレクトすることだけです。

現時点では、pdfテンプレートはhello worldを出力するだけなので、パラメーターは必要ありません。これが機能するようになったら、いくつかのデータを追加しようとします。

'/'が追加されていない場合、コントローラーを指定する必要があるというエラーが表示されます。しかし、私はこれを無駄に追加しようとしました。さらに、このアクションが宣言されているコントローラーを指定しようとしたため、どのコントローラーが必要かわかりません。

誰かがこれを見て、私が間違っていることを教えてもらえますか?

 RenderingService pdfRenderingService


 def displayPDFSummary = {
        ByteArrayOutputStream bytes = pdfRenderingService.render(template: "_pdfTemplate", controller:"RSSCustomerOrder", model: [origSessionId:params.origSessionId])
        def fos= new FileOutputStream('NewTestFile.pdf')
          fos.write(bytes)
          fos.close()

        render(template: "_pdfTemplate", params: [origSessionId:params.origSessionId])
    }

コンソールに次のエラーメッセージが表示されます。

groovy.lang.MissingMethodException: No signature of method: java.io.FileOutputStream.write() is applicable for argument types: (java.io.ByteArrayOutputStream)

(Then prints contents of template...)

Possible solutions: write([B), write(int), write([B), write(int), wait(), wait(long)
4

1 に答える 1

2

FileOutputStreamのドキュメントを見ましたか?write(OutputStream)メソッドはありません。

試してみてくださいfos.write(bytes.toByteArray())。また、bytes.writeTo(fos)動作する可能性があります。

于 2012-06-18T15:47:20.117 に答える