[無料でラクラクJava帳票作成] JasperReports使い集合
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGそれなりの帳票ツールがないとテンテコ舞。
でも、帳票ツールは高い。
せっかくJavaとかTomcatとか無料で開発・運用できる環境があるのに
帳票も作りも無料でやりたいもんだ。
そんな救世主JasperReportsについて朝まで語り合いましょう。
http://jasperreports.sourceforge.net/
デザインツールiReportやJasperAssistantがなければ
ラクラクにはなりませんのでその話題も・・・。
http://ireport.sourceforge.net/
http://www.jasperassistant.com/index.html
1げっと。
0249デフォルトの名無しさん
2008/07/14(月) 15:29:38ずーっと 出来てますよ。(っても触りだしたが2.0.xからだけど
この間3.0.0に上げたけど問題なく出来てます。
環境は
ウェブアプリ、全体的には EclipseRCP×HttpInvoker なんだけど
PDFの出力だけ内部ブラウザからアクセスさせてるから
Jasper部はウェブアプリ
僕がサブレポートで躓いたときは
「サブレポート表現」に絶対パスを渡すのがミソだった
0250245&248
2008/07/14(月) 22:28:17確認ありがとうございます。
それと原因わかりました。作成していたサンプルはサブレポートにデータソースもなにも
ないレポートをつけていたのですが、そうだと表示されないみたい。
Tutorial SWFのサブレポートを真似してDB(レポートクエリ)からデータをとってくるように
したらサブレポートが表示されました。
実際は、Java(Webアプリ)から配列で情報を渡して配列の内容を一覧してくれるような
サブレポートを作りたいのですがどうしたらよいか・・・。もうちょいサンプルをググって見ます。
ともあれ、サブレポートの動作確認はできました。有難うございました。
0251デフォルトの名無しさん
2008/07/15(火) 14:58:55jrxml側
1.サブレポートに渡す為のパラメータを追加
(例:パラメータ名:summary、 パラメータクラスタイプ:net.sf.jasperreports.engine.JRDataSource
2.サブレポートのプロパティに1.で作成したパラメータを設定
(例:サブレポートタブの「接続/データソース表現」で「データソース表現の使用」を選択して $P{summary} と書き込む
java側
3.パラメータに データソースを "summary"でぶち込む
List list = new ArrayList();
...
JRBeanCollectionDataSource ds4mainreport = new JRBeanCollectionDataSource(list);
JRBeanCollectionDataSource ds4subreport = new JRBeanCollectionDataSource(list);
Map param = new HashMap();
param.put("summary", ds4subreport);
JasperPrint print = JasperFillManager.fillReport
("somewhere/some.jasper", param, ds4mainreport);
こんな感じかな?
0252251
2008/07/15(火) 15:00:29メインとサブで 同じデータソース(list)になっちゃってるけど気にするなwww
0253デフォルトの名無しさん
2008/07/22(火) 17:24:322.0.5にしたらcompileReportToFileでjrxml→jasperにプリコンパイルすると
次のようなエラーが出てしまいます。
net.sf.jasperreports.engine.design.JRValidationException: Report design not valid :
1. Warning : Element bottom reaches outside band area : y=30 height=11 band-height=39
at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:260)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:144)
at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:591)
at java.lang.Thread.run(Thread.java:595)
どうやらバンド領域をはみ出したエレメント(表示項目)があるとこのような
エラーが出るようです。0.6.7でははみ出してもプリコンパイルも表示もうまく
いっていたのですが・・・。
元々なぜバンド領域をはみ出してレイアウトしているかを説明すると長くなるので
割愛させていただきますが、現状のままバージョンアップをしたいと考えています。
何か回避方法はありますでしょうか?
0254デフォルトの名無しさん
2008/07/25(金) 06:37:54無理だと思います。
割愛している必要性の部分が想像できないので代替方法の提案もできないです。
0255253
2008/07/26(土) 00:27:26throwしている部分をソースを修正し強引に回避してcompileReportToFileはとおるようにしましたが
表示ができませんでした。
それで結局はみ出さないようにレイアウトを変更することで解決しました。
0.6.7ではdetail部分に表示する表のヘッダ(タイトル部)をpageHeaderにレイアウトしたとき
表のヘッダの罫線をpageHeaderからdetailにはみ出さないとヘッダと明細の表の罫線がうまくくっ付かなかったので
線をくっ付けるにははみ出さないとダメというjasperreportsの仕様だと思ってました。
でも本来の仕様は2.0.5が正しいということなのですね。
失礼しました。
0256デフォルトの名無しさん
2008/07/28(月) 16:17:29ランタイムエラーが発生しました。
デバッグしますか?
行:nnn
エラー:'s'は宣言されていません。
となるよぉ
0257デフォルトの名無しさん
2008/07/29(火) 02:09:10ウザイよね。
リニューアルしてから、iReportのEclipseプラグインのアップデートサイトがつながらないのが困る。
フォーラムに同じ質問投げてる人いるけど、回答なし。
0258デフォルトの名無しさん
2008/08/01(金) 14:32:23イメージ
プリンター: EPSON VP-1850 (ドットプリンター)
連続用紙を使用
・横長指定の出力をした場合
プリント イメージ が90度回転した形で出力されてしまいます。
・JAVA で縦長を指定した場合
iReport で横長指定をしている物をJAVA(jasper)側で、縦長指定している為に
イメージの後ろが切れてしまいます。(当然ですが)
JAVA SOURCE
HashPrintRequestAttributeSet attribute = new HashPrintRequestAttributeSet();
attribute.add(OrientationRequested.PORTRAIT); // たて
// 出力
exportJasperReport(template, attribute, vo, DOWNLOAD_FILE);
・ちなみにCANON ページプリンター(レーザー)では、正しく出力します。
お手数ですが、JasperReport で連続帳票を出力経験のある方いらっしゃいましたら
ご教授お願いいたします。
iReport ページサイズの指定
幅: 29.940
高さ: 17.780
用紙向き: 横長
0259デフォルトの名無しさん
2008/08/05(火) 13:56:01attribute.add(OrientationRequested.LANDSCAPE);
ではどう?
或いはプリンタの設定で90度回転とか?
0260デフォルトの名無しさん
2008/08/05(火) 18:32:42回答ありがとうございます。
返信遅くなりました。
attribute.add(OrientationRequested.LANDSCAPE);
を指定した場合。
プリント イメージ が90度回転した形で出力されてしまいます。
attribute.add(OrientationRequested.PORTRAIT);
を指定した場合。
iReport で横長指定をしている物をJAVA(jasper)側で、縦長指定している為に
イメージの後ろが切れてしまいます。
プリンターの回転についてですが、プリンタードライバーに回転が見当たらず
ハード側(プリンター本体)からの指定が分からず調査中です(指定がなさそう)
プリンター: EPSON VP-1850 (ドットプリンター)
連続用紙を使用
今回はありがとうございました、また良い案がありましたら
アドバイスおねがいします。
0261デフォルトの名無しさん
2008/08/06(水) 14:01:29実際の動作と逆転していて混乱しませんか?
JasperBabylonで管理されてるんでしょうか?
誰か直して(指摘して)くれるとありがたいです(´・ω・`)
0262259
2008/08/06(水) 23:13:51ん!>>258で「90度回転した形で出力されてしまいます。」
出力時に90度戻せばOKだと思ったんだけどそうじゃないの?
現状の用紙の方向と印字の向きがよくわからないよ。
0263デフォルトの名無しさん
2008/08/28(木) 19:02:04どこかに条件を定義してそこを参照することってできないですかねぇ
条件を修正することがあると全部直さなきゃいけない
0264デフォルトの名無しさん
2008/08/29(金) 01:27:53printWhenExpression でその変数参照するようにするとか?
http://jasperforge.org/uploads/publish//jasperreportswebsite/JR%20Website/jasperreports_tutorial.html#Variables
0265デフォルトの名無しさん
2008/08/29(金) 23:40:56なるほど。目から鱗です。
て実装方法がピンとこないけど試行錯誤してみます。
0266263
2008/09/02(火) 22:08:20ページが変わったときに変数を更新するにはどうしたら・・・
と心配していましたが、試行錯誤することなくアッサリとできました。
さんくすでした。
しかし、pageheader、pagefooterバンドのところで1ページ目だけに
表示するように条件式を入れたんですが、pageheaderバンドだけ
どうしても2ページ目にも表示してしまい断念しました。
バージョン0.6.7だからかなぁ。
0267デフォルトの名無しさん
2008/09/03(水) 00:52:31どんな条件で表示判定しようとしてる?
incrementType とか設定してる?
0268デフォルトの名無しさん
2008/09/03(水) 19:57:26<variableExpression>と<initialValueExpression>に
[new Boolean($V{PAGE_NUMBER} == 1)]を
resetTypeは"Page"にしてその他は何も設定していません。(iReportのデフォルト)
0269デフォルトの名無しさん
2008/09/04(木) 04:52:54・1ページ目には表示されている。
・2ページ目の pageHeader に表示、pageFooter に非表示
・3ページ目以降はどちらも非表示
で、2ページ目の pageHeader のみおかしいと。
pageHeader 表示の判定で、variable が評価されるタイミングが、
$V{PAGE_NUMBER} がインクリメントするタイミングより早いとか?
pageHeader/pageFooter 使わずに
group の header/footer 使ったら、評価の順序が調整されるかも。
まるっきり希望的観測ですけど。
0270デフォルトの名無しさん
2008/09/04(木) 19:26:14症状はそうです。
3.0.0でやっても同様の動作でした。
1帳票に同じ条件のprintWhenExpressionが最大40箇所あって
Variablesでなんとかなれば動作的にも若干軽くなるところなのですが・・・
とりあえずVariablesでのフラグ化はあきらめておとなしく全部の項目に条件式を入れました。
さんくすした。
0271デフォルトの名無しさん
2008/09/05(金) 01:55:57ところで、今更でもうしわけないんだけど
Integer を引数にして Boolean を返す static メソッド持つ
適当なクラス作って、クラスパス通しといて
printWhenExpression の中でそのメソッド呼ぶのが
手っ取り早かったかも知れない・・・
Variables と違って評価順も明快だろうし。
動作的に軽く云々はまた別の話かも。
0272デフォルトの名無しさん
2008/10/24(金) 10:55:08携帯からの書き込みのため、正確でない部分がありましたらすみません。
数種類の帳票をexportReportToPdfStreamで作成してますが、同じページ数でもデータ量の多い帳票は、このメソッドですごく時間がかかってしまいます。
開発環境がAMD Sempron1GHz、メモリが1.5GHz、JVMのオプションでメモリの最小最大とも512MHzを指定していますが、600ページ程のPDFにするのに15分、場合によってはOutOfMemoryErrorで作成できないことがあります。
上記メソッド実行中、CPU100%になります。
速度とメモリエラーとCPU100%になるのを改善したいです。
アドバイスいただけないでしょうか?
0273272
2008/10/24(金) 11:15:25Hzじゃないですね。すみません。
0274デフォルトの名無しさん
2008/10/29(水) 08:02:43なにかいい方法はあるでしょうか
アドバイスよろしくお願いします。
0275デフォルトの名無しさん
2008/11/13(木) 11:59:44亀レスだが
直接ファイルに出力する(FileOutputStream)とか、
パイプする(PipedOutputStream)とか、
あとは中身みてみないとわかるわけないね。
>>274
背景に使う画像ファイルのパスを変数にすればおk
0276デフォルトの名無しさん
2008/11/20(木) 07:48:23自分の説明不足で申し訳ありません。
フィールドの背景色を動的に変更する方法はないですしょうか
0277275
2008/11/23(日) 14:29:45書き込んだ後、そうかなーって思ったwww
ちょっと調べてみたけど、情報みつかんない。
本家のフォーラムに同じ事やりたいって書いてある人にレスついてないし
無理矢理やるとすれば、未コンパイル(jrxml)のままファイルを置いておいて編集してからコンパイルするってのが出来るかもしれないけど、非現実的だな
あとは、できあがったPDFを編集するとかかなー
Jasperreportsだけじゃ無理っぽいス
0278デフォルトの名無しさん
2008/11/28(金) 09:39:53例えば発注書を作成するとして
長い品名があるとき皆さんはどう対応してますか?
やむを得ず印字できるところまでであきらめますか
それともデータを加工して改行したりしてますか
0279デフォルトの名無しさん
2008/11/28(金) 12:54:170280デフォルトの名無しさん
2008/12/01(月) 18:22:05大抵、jakarta commons で省略する
一回だけタックシールの印刷の時に全文字はいるようにフォントサイズの調整をした事があるなー
VB6だったけど。
0281デフォルトの名無しさん
2009/02/19(木) 12:05:49さらに「ページ番号のリセット」にもチェックを付けておけば
$V{PAGE_NUMBER}(評価時間:今すぐ)がグループ中ページ番号、
$V{PAGE_NUMBER}(評価時間:レポート)がグループページ数という扱いになりますが、
全体のページ番号・ページ数も同時に表示させたい場合にはどうすればよいでしょうか?
イメージとしては以下のような感じです。
グループ:1 グループページ:1/2 ページ:1/6
〜改ページ〜
グループ:1 グループページ:2/2 ページ:2/6
〜改ページ〜
グループ:2 グループページ:1/3 ページ:3/6
〜改ページ〜
グループ:2 グループページ:2/3 ページ:4/6
〜改ページ〜
グループ:2 グループページ:3/3 ページ:5/6
〜改ページ〜
グループ:3 グループページ:1/1 ページ:6/6
0282デフォルトの名無しさん
2009/03/05(木) 22:44:18なにか方法ありますか?
0283デフォルトの名無しさん
2009/03/17(火) 03:09:50パチもん→コピー商品
バッタもん→倒産した会社から安く買い叩いた正規品
0284デフォルトの名無しさん
2009/03/17(火) 05:24:35パチもん→OpenOffice
バッタもん→秋葉原でガイジンが売ってる緑のCDのExcel
ということか。
で、誤爆は何になるんだ?
0285デフォルトの名無しさん
2009/04/18(土) 21:42:31もう解決しているかもしれんが、
HeiseiKakuGo-W5,Bold
HeiseiKakuGo-W5,Italic
でおk
0286デフォルトの名無しさん
2009/05/17(日) 07:17:22∧,,∧
( `・ω・) ウーム…ここは?
/ ∽ |
しー-J
0287デフォルトの名無しさん
2009/07/21(火) 10:57:11漢数字フォーマットの数値セルって不可能?
日本語版Excelは"[DBNum1][$-411]G/標準"みたいにして
漢数字フォーマットを扱えるんだけど、
POIのHSSFDataFormatは"[DBNum1]"に対応してない気がするんだが。。。
0288デフォルトの名無しさん
2009/09/28(月) 13:50:56サブレポートを使った帳票を作成しています。
mainのdetailにサブレポートを指定していますが、
出力した時に、インデントがずれて右よりになってしまいます。
レイアウト上はサブレポートもdetailの左端に揃えているのですが…。
解決方法はありますでしょうか。
0289デフォルトの名無しさん
2009/10/01(木) 03:06:140290デフォルトの名無しさん
2009/10/02(金) 10:12:25余白「0」設定してませんでした。。。
無事、揃えて出力ができました。
ありがとうございます。
すいません。さらに別件で質問です。
グループ指定についてです。
一覧表で、「ユーザー名」または「登録日」の
どちらか一方が変わるごとに、金額合計を表示したく、
「ユーザー名」と「登録日」の2つのグループを作成し、
各フッターに「一覧合計」の欄を設定しました。
しかし、「ユーザー名」と「登録日」の両方が同時に変わると
一覧合計が2つ表示されてしまいます。
上記の場合は、一覧合計の表示は1つで良いのですが、
そのためにはどのように設定したらよろしいでしょうか。
0291デフォルトの名無しさん
2009/11/26(木) 22:54:50亀だけど、ユーザ名と登録日を結合したフィールドを使えば良いかと
用紙サイズの違う2つの単票をJasperPrint1.addPage((JRPrintPage)JasperPrint2.getPages().get(0))
で、1つのPDFファイルにまとめています。
1ページ目はA3、2ページ目はA4のようにiReportで指定した用紙サイズで印刷したいのですが
2ページ目もA3になってしまいます。
設定方法をご存知の方教えてください。
0292デフォルトの名無しさん
2010/02/04(木) 22:34:25画面からの同期処理でPDFするには、どういう方法がいいですか?
0293デフォルトの名無しさん
2010/02/14(日) 10:13:000294デフォルトの名無しさん
2010/02/14(日) 12:04:070295デフォルトの名無しさん
2010/02/14(日) 13:47:050296デフォルトの名無しさん
2010/02/14(日) 17:39:440297デフォルトの名無しさん
2010/02/25(木) 11:58:410298デフォルトの名無しさん
2010/02/26(金) 05:07:02JasperReports 使ったことがほとんどないならそう書いた方が
適切な回答が期待できると思う。
後者だと仮定して、
stretch with overflow を指定しない場合、
確保した矩形領域分しかテキストは出力されませんよ。
0299297
2010/02/27(土) 21:03:42ありがとうございます。
stretch with overflowを設定したら解決しました。
JasperReportsは勉強始めたばかりです。
「JasperReports 3.5 for Java Developers」という参考書に掲載されていた
サンプルコードをそのまま利用したけど、実行結果が違ってて悩んでいました。
サンプルコードにはstretch with overflowの設定は書かれていませんでした、
参考書のコードが間違っていたようです。
0300デフォルトの名無しさん
2010/03/03(水) 04:48:33最初の一歩的な例として、細かい話はあえて省略してるのかも。
0301デフォルトの名無しさん
2010/04/18(日) 18:39:100302デフォルトの名無しさん
2010/06/12(土) 02:25:29スレ違いでしたらすみません。
花園フォントまたは花園明朝OTを PDF に埋め込みたいと考えています。
JDK7 の M3 から Unicode 5.1 に対応しているそうですが、IVS を使った異体字の PDF 出力を試した方はいらっしゃいませんか?
一応、テキストファイルとしてなら異体字が正しく出力できていることを Windows7 のメモ帳などで確認しているのですが、PDF への埋め込みには成功していません。
なお、開発環境は、JDK7 build95、iReport 3.7.3(JasperReports3.7.3/iText2.1.7) です。
または、JasperReports を使って、CID コードを直接指定して CID フォントを PDF に出力することが可能かどうかご存じな方はいらっしゃいませんか?
0303デフォルトの名無しさん
2010/07/28(水) 17:42:130304デフォルトの名無しさん
2010/07/28(水) 18:42:220305デフォルトの名無しさん
2010/07/28(水) 18:49:320306デフォルトの名無しさん
2010/08/03(火) 19:54:52Java: 1.6.0_20; Java HotSpot(TM) Client VM 16.3-b01
上記の環境で帳票を作成し、完成した帳票をJasperServerCEに登録、PHPで用意した画面から
SOAPを通してJasperServerのrunReportを呼び出しって感じで運用しようとしております。
ちゃんと帳票自体は表示されるのですが、EXCEL出力しようとすると全然ダメに・・・
帳票の中の表を、iReportのTextFieldとStaticテキストにstyleで枠線を付け、これを組み合わせて
表現しているのですが(つまり、セルの集合で「表」を表現してます)、EXCEL形式で出力すると
罫線が全部消えてしまうのです
iReportのPreviewを使って表示すると罫線までちゃんと出るのに、何故ブラウザから表示すると
ダメなのか・・・大分調べたのですが原因不明です。
どなたか、ご存知の方いらっしゃいましたらよろしくお願いします。
0307302
2010/09/04(土) 13:48:22>>303 は私ではありません。
半ば諦め気味ですが、相変わらず試行錯誤してます。
花園フォント側で尋ねた方がいいのでしょうか...
0308デフォルトの名無しさん
2010/11/18(木) 11:47:06このスレをざっと流し読みしてて、ついさっきBackground Bandの存在を知りました。
羅線をBackgroundに描けたらいいなと思っているのですが、位置合わせがめんどくさいです。
Backgroundはデザイン時にPage HeaderやDetail等と重ねて表示出来ないのでしょうか?
0309デフォルトの名無しさん
2010/12/28(火) 17:08:590310デフォルトの名無しさん
2011/02/09(水) 21:53:06フェッチしたデータ
Data1, Data2, Data3, Data4
上記データを例えばレイアウトの2番目の位置からセットしたいのですがやり方が分かりません。
下記のように出力したいのですが、PDF生成時にパラメータで印字開始位置を指定する方法はないのでしょうか?
[ブランク][Data1]
[Data2][Data3]
[Data4][ブランク]
[ブランク][ブランク]
[ブランク][ブランク]
0311デフォルトの名無しさん
2011/02/09(水) 21:58:030312デフォルトの名無しさん
2011/04/30(土) 13:45:01.19どこにもそれっぽいアイコンが見当たりません
0313デフォルトの名無しさん
2011/04/30(土) 14:24:39.97パレットにありました。すいません。
0314デフォルトの名無しさん
2011/08/15(月) 17:29:07.76JasperReportsに限ったことではありませんが。。。
作成したPDFをページ表示させず、
クライアントの「通常使うプリンタ」で印刷させる方法はないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています