今回は jasper ファイルから pdf を出力します。
ざっくりコードから!
def report="sample.jasper"
def ds=new JRXmlDataSource("http://localhost:8080/jasper/book/xmllist","/list/book")
def print = JasperFillManager.fillReport(report,[:], ds)
def pdf=new File("test.pdf")
JasperExportManager.exportReportToPdfFile(print,pdf.getAbsolutePath())
reportに帳票ファイルのパスを指定(File型は使えないので注意)
今回はXMLを読み込むのでデータソースにJRXmlDataSourceを作成、前回アクションでxmlを生成するようにしたので、そのURIと、データの基準となるxpathを指定
JasperFillManager.fillReport でレポートファイルと、帳票パラメーター(今回はなしなので空のマップ)、データソースを渡して JasperPrint を作成します。
JasperExportManager.exportReportToPdfFile で出力先のファイルを指定して実行
これでPDFが出力されます。
小さな帳票だったら爆速です!(BIRTと比べて)
ブラウザに表示したい場合は JasperExportManager.exportReportToPdf でPDFのbyte配列がかえるので、これをストリームに返してやればOKです(contentTypeとかはちゃんとセットしてね)
1 件のコメント:
同様のやり方で実施しましたが、空のPDFが出てしまいます。
def print = JasperFillManager.fillReport(report,[:], ds)
この部分を、
def print = JasperFillManager.fillReport(report,[:], new JREmptyDataSource())
に置き換えてやるとデータソースから取得する値を除いて正常にPDF出力されます。
データソースの読み込み部分がおかしいのでしょうが、よくわかりません。fillReportの第2引数は[:]で良いですか?
コメントを投稿