[無料でラクラクJava帳票作成] JasperReports使い集合
■ このスレッドは過去ログ倉庫に格納されています
JAVAで帳票作成するとなると それなりの帳票ツールがないとテンテコ舞。 でも、帳票ツールは高い。 せっかくJavaとかTomcatとか無料で開発・運用できる環境があるのに 帳票も作りも無料でやりたいもんだ。 そんな救世主JasperReportsについて朝まで語り合いましょう。 http://jasperreports.sourceforge.net/ デザインツールiReportやJasperAssistantがなければ ラクラクにはなりませんのでその話題も・・・。 http://ireport.sourceforge.net/ http://www.jasperassistant.com/index.html 1げっと。 一つの科目に限れば普通の帳票になるので、 それを Subreport とした帳票を作ってはどうか。 /demo/samples/subreport とか参考にして。 AddressReport.jrxml ← 全科目帳票 ProductReport.jrxml ← 科目別サブレポート にそれぞれ対応すると思えばいい。 >>183 ,184 ご意見ありがとうございます、やってみます。 時給1000円でJava教えてくださるかたを募集します 場所 所沢(池袋・高田馬場から直通) i−want−to−study−java@hotmail.co.jp (アドレスは全角で書いてあるので半角に直してください) よろしくおねがいします 明細が2列のレポートを作成した場合、最終ページが2列目で終了すると 空白ページが差し込まれるという現象が発生するんですが何か対策はないでしょうか? サブレポートを使用してサブレポート内で2列明細を使用した場合も同じような 感じです。 117 から数レスほど読んで、該当しなければ もう少し詳しく説明してみるヨロシ。 あと列じゃなくて行だよね。 2列というのは、jasperreportタグのcolumncountを2にした場合の事です 2列目で終了した場合、サマリーバンドを新しいページで追加しようとしているようです 失礼しました。 段組はやったことないのでなんとも。。 Forum を 「columnCount blank」で検索すると ・サマリーバンドを高さ0にする。 ・サマリーバンドを消す。 ・サマリーバンドのprintWhenExpressionにBoolean.FALSEを指定する。 など書かれてるようですが、 2003年頃から言われてて2006年でもごにょごにょやってるんで 完璧なバグフィックスはされてないのかも知れないですね。 よう分からんです。 時給1000円でJava教えてくださるかたを募集します 場所 所沢(池袋・高田馬場から直通) よろしくおねがいします i−want−to−study−java@hotmail.co.jp 教える対象は超初心者です。 専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です 仕事でJasperReportsを使ってPDF出力をやるって話になっているのですが、 調べてもわからない事が多いので質問をさせてください。 ●やりたいこと iReportを使って1人分の雛形を作っておいて 1つPDFファイルの中に人数分同じ雛形を動的に作成したい。 調べている途中なので変なソースかもしれませんが にしてあります。 これで単純に同じ1つの雛形を作っておけば1つのPDFファイルの中に同じ雛形のデータが2つできるのかなと 思っていたのですが、上書きをされてしまって1つ分のデータしか出来ません。 実現方法がわからないので何かアドバイスがあったらお願いします。 ※ソースは後述 String filename = "sampleReport"; JasperPrint jPrint = null; JasperReport jReport = JasperCompileManager.compileReport("sampleReport.jrxml"); Map parameters = new HashMap(); for (int i=0;i<2;i++) { jReport = JasperCompileManager.compileReport("sampleReport.jrxml"); parameters.put("ReportTitle", "タイトル"); parameters.put("name", "名前"); parameters.put("affiliation", "会社名"); parameters.put("initiation", "2006/05/01"); parameters.put("portrait", getImageFile("images\\Sunset.jpg")); jPrint = JasperFillManager.fillReport(jReport, parameters, (JRDataSource)null); jPrint.setLocaleCode(Locale.JAPANESE.toString()); jPrint.setTimeZoneId(TimeZone.getDefault().toString()); } JasperExportManager.exportReportToPdfFile(jPrint, filename + ".pdf"); jrxmlの isTitleNewPage="true" isSummaryNewPage="true"> のようにしています。 for の囲いを取り払って、fill してる行を以下の4行にしたらどうなります? JRDataSource dataSource = new JRBeanArrayDataSource( new Object[10] ); jPrint = JasperFillManager.fillreport(jReport, parameters, dataSource); font.propertiesで指定している論理フォントを埋め込みたいんだけど どういう風に指定すればいいか、誰か知っていたら教えてください。 テストサーバと本番サーバで、 フォントの入ってるディレクトリのパスが違うので それが解決できればいいんだけど、 それには論理フォント指定が出来ればいいかなと。 少なくとも、ネットで見つかるフォントの埋め込みをやってるサンプルは どれもフルパスで指定してたので、 そうではなく相対パスで指定したいと思ってます。 プロパティファイルを読みこんでくれればそれでも解決なんだけど。 サンプルにあったFontってのが、なんだかそれっぽい事をしてたけど 真似しても上手くいきませんでした。 ただ、font.propertiesとかいじったの初めてなので、サーバ設定の方が悪いのかもしれない……。 >197 サンプル見てみたけど、FONT_MAP に put してる フォントオブジェクト作成する際の物理フォントのファイルパスを プロパティファイルか何かで取得するようにすれば それで用件が満たせそうな気がする。 ・デザインファイル(*.jrxml)は一つ ・コンパイル済みデザインファイル(*.jasper)は一つ ・プログラムは一つ ・プロパティファイルは開発用と本番用の二つ 実際に試してみてないのでこれで行けるとは断言できんけど。 >それっぽい事 具体的にどんな事をしたんでしょうか。 >>198 それは、jrxmlからjasperを作るときに、プロパティファイルを読み込んで 値を変更するって事でしょうか。 そうではなくて、jasperからプロパティファイルを読み込ませる方法があるのかな? それっぽいことと言うのは、 今、サンプルも自分のソースも手元に無いから詳細は違うかもしれないけど。 確かサンプルの方では、fontNameがSerif、 pdfFontNameがフォント名(Times New Romanだったかな?) になってる部分があったと思います。 また、Serif等の論理フォント名はfont.propertiesを見て決めていると Linux上の日本語フォントの扱いを調べていて知りました。 なので、上記の構成を真似て font.propertiesのSerifにマッピングするフォントを日本語TrueTypeフォントに変更し、 fontNameにSerif、pdfFontNameに使用した日本語フォントの名前 (Windowsで、ダブルクリックした時のフォント画面で表示される名前)を 設定した、のだったと思います。 しばらく前の記憶を頼りに書いているので、詳細は違うかも。 > それは、jrxmlからjasperを作るときに、 > プロパティファイルを読み込んで値を変更するって事でしょうか。 そうっす。 開発用・本番用のプロパティファイルの振り分けは ant とかでやればいいだけの話なんで これで困ることはないと思うんですよ。 FontApp.java で > FontKey key = new FontKey("sansserif", false, true); (中略) > exporter.setParameter(JRExporterParameter.FONT_MAP, fontMap); って部分があって、ここで sanserif を COMICBD.TTF にマップしてると思われ。 で、作成される PDF の sansserif 指定されてる部分が 愉快なフォント(COMICBD.TTF)になってる、と。 font.properties から引っ張ってくるところを プログラム側から上書きしてるイメージ。 FONT_MAP を *.jrxml 内部で指定できるかどうかは ちょっと試してみないと分からないです。 >>200 レス遅くなってすみません。 それでやってみます。 他にも何かやり方がありそうだったら、また報告します。 ttp://www.thinkit.co.jp/free/tech/4/4/1.html のサンプルを試そうとしたら JasperReport jasperReport = JasperCompileManager.compileReport(templatePath); で java.lang.NoClassDefFoundError: org/apache/commons/digester/SetNestedPropertiesRule が発生しました。 このクラスはどこにあるのですか。 >202 です。 自己解決しました。 TomcatPlugin内のDevLoader.zipを解凍して Tomcatのlibフォルダに入れることで解決しました。 ですが、次は java.lang.NoClassDefFoundError: org/apache/commons/javaflow/bytecode/Continuable が発生してしまいました。 解決方法を教えてください。 >>203 NoClassDefFoundErrorが起こっているクラスのパッケージ名から、 どのライブラリが欠けているか、想像できない? <チラシの裏> それにしても、Commons JavaFlowなんてものがあるのか・・・。 そしてJasperReportsで使ってたのか・・・。 </チラシの裏> >>202-203 どういう環境でやろうとしてるのか良く分からないけど、要するに jasperreports.jarだけをlibに突っ込んで帳票を出そうとして、 NoClassDefFoundErrorが出たところだけ順番に潰しているという前提で。 > TomcatPlugin内のDevLoader.zipを解凍して まずここからして解せない。そんな事する必要は無いはずなんだが。 それに、Tomcat自体のlibフォルダに、特定のモジュール用のファイルを入れると、 いずれ他のモジュールとバッティングして混乱するからやめた方がいいぞ。 それと、一つずつ聞いていくと、君はこのスレであと5回ぐらい質問する事になる。 まず、 ttp://sourceforge.net/project/showfiles.php?group_id=36382&package_id=28579 ここでjasperreports-1.2.5-project.zipを落として来るといい。 そして、その直下の「lib」ディレクトリの中から あとはNoClassDefFoundErrorが出ているパッケージ名に、名前が似てるjarを探して Tomcatではなくモジュールのlibディレクトリにコピーしろ。 全部コピーすれば一発で動くが、要らないjarまで入るから鬱陶しい。 1つ入れては動かして、次のNoClassDefFoundErrorを確認して……って手順でやれば jasperReports自体は、確か7つぐらいのjarで動く。 書いてから気づいた、TomcatPluginって eclipseからTomcat立ち上げるための設定なのかな? そうだとしたらスマソ、中段はちょっと的外れだったかも。 ┌──────────┐ │┌───┐┌───┐│ ││リスト││リスト││ ││ ││ ││ ││ ││ ││ │└───┘└───┘│ └──────────┘ こんな感じの帳票を作りたいんですが、 どうすればできますでしょうか。 ずれまくってる・・・ 1枚に明細が2つある帳票です。 左の明細と右の明細は同じ構造?(段組なのか、違う構造を並べるのか) 段組ならサブレポートのサンプルがまさにそんな感じ。 違う構造並べる場合は、高さ調整とかどうなるのか分からない。 >>209 回答ありがとうございます。 同じ構造でいいです。 ご指摘のサンプルを動かしてみましたが、 サブレポートが表示されないんですが。 レポート実行時のDIRをどう指定しても表示されません。 ちょっとレスの内容と違うが、 帳票って知ってる人って少ないと思わない? ついに1000体突破かよ アイロボットみたいだな 株ロボもいつか夢を見るようになるのかなぁ 外字を含むデータを出力することは出来るのでしょうか。 外字使うフィールドと通常文字使うフィールドが分かれてるなら出来る。 同一フィールドに混在させるなら制限付きになりそう。 絶対に使わないコードポイントを外字に割り当てて、 かつ、そういうフォントを用意する、とか。 iReportのeclipseプラグインがリリースされてた。 rmi使ってeclipseからiReportや新規ウィザードを起動させてるみたいなんだけど正常に動かない(><) 試された方います? XLSで出力するときに、印刷範囲の指定って出来ますか? JExcelAPIのSheetSettingで設定できるというところまでは調べたのですが、 JasperReportsからアクセスするメソッドが見当たらないんです。 やっぱりJExcelAPIを単独で呼び出すしかないんでしょうか。 簿記の正式な書式って結構うるさいけど、 その正式な帳簿として出力含めてできますか? レコードを横方向に伸びる形で表示することは簡単にできますか? 縦方向に伸ばすのは楽だが 横方向に伸ばすのは無理だと思ったほうが。 excelで出力するときにバージョン指定ってできる? execl2000,excel Xp で出力するみたな。 Excel 出力は jakarta-poi の 2.0-final を使ってて、 POI 自体は 97(-2000) 互換のファイルを作れます、だそうで。 POI について詳しく調べてないけど、 出力バージョンの制御ってなかった気がする。 そもそも Excel のフォーマットが 97/2000/XP でどれだけ違うのかが分からない。 >>228 なんかOSとごっちゃになっているみたいだが、 ExcelのフォーマットはOffice 97からOffice 2003まで変わっていない。 2007で変わってしまったみたいだが。 レスthx。 私は2000をつかっているのですが、昔XPとかをつかったときに 保存形式に2003とかあったような気がしたので。。。勘違いしていたようです。 ありがとうございました。 Windows2003サーバに環境を上げて 某複合機に印刷したらTomcatサービスごと落ちた。 他のプリンタでは問題ないし旧環境でも問題なかったので ドライバのせいだと思うのでスレチガイ失礼。 iReport-2.0.5、JasperReport-2.0.5を使ってます。 IMAGEフォルダのサンプルを使ってPDFファイルの作成を試していますが、iReportでは問題ないのに、プログラムからファイルを作ると画像が表示されません。 ファイルサイズも小さいので、画像が組み込まれていないようです。 画像のパスを絶対パスにしても駄目でした。 以下はコードです。 String xmlPath = "c:/ImagesReport.jrxml"; String destPath = "c:/ImagesReport.pdf"; JasperReport jasperReport =JasperCompileManager.compileReport(xmlPath); JasperPrint print = JasperFillManager.fillReport(jasperReport, new HashMap()); JasperExportManager.exportReportToPdfFile(print, destPath); 何が問題なんでしょう? アドバイスお願いします。 状況説明の仕方に問題がありそうだが。 > iReportでは問題ないのに サンプルでは問題なく動いたのに、の意味なのか? iReport上の環境で実行したら問題ないの意では? >>234 携帯から書き込んだので、端折った書き方をしてしまいました。 わかりづらくて申し訳ありません。 >>235 さんが書かれている通り、iReport上で「空のデータソースで実行」すると正常に 表示がされます。 なのでXMLファイルには問題ないと思うのですが(サンプルですし)、かといってコードに問題あるとも思えず・・・。 iTextのバージョンが2.1.0なんですが、バージョンの組み合わせが悪いとかあるでしょうか? > バージョンの組み合わせが悪いとか 特定の組み合わせのどれがとかって、 商用プロダクトでもロクに調べないわけで。 とりあえず JasperReport 添付のバージョンで試してみてはどうだろう。 あとは空の Map の代わりに JREmptyDataSource 使ってみるとか。 パス指定で問題起こした場合(=自分のミス)を除けば プログラムからのPDF作成で 画像が出なかったことってなかったですよ。 >>237 JasperReport 添付のバージョンですか? 現在がそれぞれの最新のバージョン使用なので、iReport-2.0.5、JasperReport-2.0.5、iText-2.1.0の 組み合わせで使用しています。 iReport-2.0.5がJasperReport-2.0.5、iText-1.3.1の組み合わせを使っているようなので、こちらの環境も iText-2.1.0→iText-1.3.1にしてみたんですが、かわらず・・・。 逆に、iReportのiTextのバージョンを1.3.1→2.1.0にしたら、同じように真っ白なPDFになったので これだ!と思ったのですが・・・。 ・・・と今ふと思いついて、iText-1.3.1に入れ替えた後に、Eclipceのworkフォルダ削除、プロジェクトクリーン、 Eclipce終了してEclipce -cleanで再起動してから再度試したところ、無事に画像が表示されました! 私の環境だけかもしれないですが、バージョンの組み合わせにより問題が出るようです。 お騒がせしました。ありがとうございました。 メインレポートにサブレポートを動的に(javaで)変更する 方法はあるのでしょうか >>239 おそくなったが、 iReportでサブレポートのプロパティ → サブレポート(その他) のサブレポート表現をパラメータで渡せば出来るんじゃないか? 試したことないけど、 フィールドにjavaから値を設定しています。 テキストを右寄せ、左寄せ、中央寄せはできるのですが 均等割りみたいなことは出来ないのでしょうか。 >>241 できないと思う。 例えば 固定幅のフォントにして文字列に対してスペースを入れ込んでいくとか。。。 ちょい無茶か いつの間にか3.0.0出てた。 この前2.0.0が出たばっかりたったのに・・・ >>243 ほんとだ っつかiReport3.0出てるのな。。。 知ってる人いたら教えてください。ググったんだけどレスついている書き込み が無くて、お手上げToT iReportでサブレポートを使ってみたんだけど、サブレポートの部分が表示され ないんです。2.0.4/2.0.5/3.0.0で試しました。 物としては、StaticTextを貼り付けただけのサブレポートをメインのレポート に貼り付けただけ。それでJRViewerでプレビューしてみたけど何も表示されない。 メインにStaticTextを貼り付けるとそれだけ表示される。 何か設定が足りない?不具合? >>245 「サブレポート表現」のパスの指定が間違ってるとか 「データないとき」プロパティに「no-data section」指定してるとか みないとわからんね >246 サブレポートを使っているサンプルをいくつかダウンロードしたけどみんなダメです。 >247 レポートの作成にはiReportを使ってます。「データ無いとき」に「no-data section」 を指定しているつもりはないんですけど、ちょっと見てみます。 っていうことは、みんなの環境ではサブレポートを使っているレポートを作れてる? 2.0.4/2.0.5/3.0.0/で動作情報あれば教えてください。 >>248 ずーっと 出来てますよ。(っても触りだしたが2.0.xからだけど この間3.0.0に上げたけど問題なく出来てます。 環境は ウェブアプリ、全体的には EclipseRCP×HttpInvoker なんだけど PDFの出力だけ内部ブラウザからアクセスさせてるから Jasper部はウェブアプリ 僕がサブレポートで躓いたときは 「サブレポート表現」に絶対パスを渡すのがミソだった >249さん 確認ありがとうございます。 それと原因わかりました。作成していたサンプルはサブレポートにデータソースもなにも ないレポートをつけていたのですが、そうだと表示されないみたい。 Tutorial SWFのサブレポートを真似してDB(レポートクエリ)からデータをとってくるように したらサブレポートが表示されました。 実際は、Java(Webアプリ)から配列で情報を渡して配列の内容を一覧してくれるような サブレポートを作りたいのですがどうしたらよいか・・・。もうちょいサンプルをググって見ます。 ともあれ、サブレポートの動作確認はできました。有難うございました。 参考までに jrxml側 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); こんな感じかな? >>251 メインとサブで 同じデータソース(list)になっちゃってるけど気にするなwww 環境を0.6.7から2.0.5にバージョンアップを試行中なのですが 2.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でははみ出してもプリコンパイルも表示もうまく いっていたのですが・・・。 元々なぜバンド領域をはみ出してレイアウトしているかを説明すると長くなるので 割愛させていただきますが、現状のままバージョンアップをしたいと考えています。 何か回避方法はありますでしょうか? >>253 無理だと思います。 割愛している必要性の部分が想像できないので代替方法の提案もできないです。 無理でした。 throwしている部分をソースを修正し強引に回避してcompileReportToFileはとおるようにしましたが 表示ができませんでした。 それで結局はみ出さないようにレイアウトを変更することで解決しました。 0.6.7ではdetail部分に表示する表のヘッダ(タイトル部)をpageHeaderにレイアウトしたとき 表のヘッダの罫線をpageHeaderからdetailにはみ出さないとヘッダと明細の表の罫線がうまくくっ付かなかったので 線をくっ付けるにははみ出さないとダメというjasperreportsの仕様だと思ってました。 でも本来の仕様は2.0.5が正しいということなのですね。 失礼しました。 本家サイトにアクセスすると ランタイムエラーが発生しました。 デバッグしますか? 行:nnn エラー:'s'は宣言されていません。 となるよぉ >>256 ウザイよね。 リニューアルしてから、iReportのEclipseプラグインのアップデートサイトがつながらないのが困る。 フォーラムに同じ質問投げてる人いるけど、回答なし。 JasperReport + iReport + JAVA で連続帳票の出力について イメージ プリンター: 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 用紙向き: 横長 >>258 attribute.add(OrientationRequested.LANDSCAPE); ではどう? 或いはプリンタの設定で90度回転とか? >>259 回答ありがとうございます。 返信遅くなりました。 attribute.add(OrientationRequested.LANDSCAPE); を指定した場合。 プリント イメージ が90度回転した形で出力されてしまいます。 attribute.add(OrientationRequested.PORTRAIT); を指定した場合。 iReport で横長指定をしている物をJAVA(jasper)側で、縦長指定している為に イメージの後ろが切れてしまいます。 プリンターの回転についてですが、プリンタードライバーに回転が見当たらず ハード側(プリンター本体)からの指定が分からず調査中です(指定がなさそう) プリンター: EPSON VP-1850 (ドットプリンター) 連続用紙を使用 今回はありがとうございました、また良い案がありましたら アドバイスおねがいします。 iReportのウィンドウメニューで「左右に並べて表示」と「上下に並べて表示」が 実際の動作と逆転していて混乱しませんか? JasperBabylonで管理されてるんでしょうか? 誰か直して(指摘して)くれるとありがたいです(´・ω・`) >>260 ん!>>258 で「90度回転した形で出力されてしまいます。」 出力時に90度戻せばOKだと思ったんだけどそうじゃないの? 現状の用紙の方向と印字の向きがよくわからないよ。 複数の表示エレメントに同じ条件の<printWhenExpression>を設定したい場合 どこかに条件を定義してそこを参照することってできないですかねぇ 条件を修正することがあると全部直さなきゃいけない >>264 なるほど。目から鱗です。 て実装方法がピンとこないけど試行錯誤してみます。 ・・・ ページが変わったときに変数を更新するにはどうしたら・・・ と心配していましたが、試行錯誤することなくアッサリとできました。 さんくすでした。 しかし、pageheader、pagefooterバンドのところで1ページ目だけに 表示するように条件式を入れたんですが、pageheaderバンドだけ どうしても2ページ目にも表示してしまい断念しました。 バージョン0.6.7だからかなぁ。 >>266 どんな条件で表示判定しようとしてる? incrementType とか設定してる? >>267 <variableExpression>と<initialValueExpression>に [new Boolean($V{PAGE_NUMBER} == 1)]を resetTypeは"Page"にしてその他は何も設定していません。(iReportのデフォルト) 症状として、 ・1ページ目には表示されている。 ・2ページ目の pageHeader に表示、pageFooter に非表示 ・3ページ目以降はどちらも非表示 で、2ページ目の pageHeader のみおかしいと。 pageHeader 表示の判定で、variable が評価されるタイミングが、 $V{PAGE_NUMBER} がインクリメントするタイミングより早いとか? pageHeader/pageFooter 使わずに group の header/footer 使ったら、評価の順序が調整されるかも。 まるっきり希望的観測ですけど。 >>269 症状はそうです。 3.0.0でやっても同様の動作でした。 1帳票に同じ条件のprintWhenExpressionが最大40箇所あって Variablesでなんとかなれば動作的にも若干軽くなるところなのですが・・・ とりあえずVariablesでのフラグ化はあきらめておとなしく全部の項目に条件式を入れました。 さんくすした。 役に立てなくてすまんかった。 ところで、今更でもうしわけないんだけど Integer を引数にして Boolean を返す static メソッド持つ 適当なクラス作って、クラスパス通しといて printWhenExpression の中でそのメソッド呼ぶのが 手っ取り早かったかも知れない・・・ Variables と違って評価順も明快だろうし。 動作的に軽く云々はまた別の話かも。 JDK1.5、Eclipse3.2でjasperReports2.0.5使ってます。 携帯からの書き込みのため、正確でない部分がありましたらすみません。 数種類の帳票をexportReportToPdfStreamで作成してますが、同じページ数でもデータ量の多い帳票は、このメソッドですごく時間がかかってしまいます。 開発環境がAMD Sempron1GHz、メモリが1.5GHz、JVMのオプションでメモリの最小最大とも512MHzを指定していますが、600ページ程のPDFにするのに15分、場合によってはOutOfMemoryErrorで作成できないことがあります。 上記メソッド実行中、CPU100%になります。 速度とメモリエラーとCPU100%になるのを改善したいです。 アドバイスいただけないでしょうか? さっそくメモリの単位間違えてました。 Hzじゃないですね。すみません。 フィールドの背景をjavaで動的に変更したいのですが なにかいい方法はあるでしょうか アドバイスよろしくお願いします。 >>272 亀レスだが 直接ファイルに出力する(FileOutputStream)とか、 パイプする(PipedOutputStream)とか、 あとは中身みてみないとわかるわけないね。 >>274 背景に使う画像ファイルのパスを変数にすればおk 275さん、ありがとうございます。 自分の説明不足で申し訳ありません。 フィールドの背景色を動的に変更する方法はないですしょうか >>276 書き込んだ後、そうかなーって思ったwww ちょっと調べてみたけど、情報みつかんない。 本家のフォーラムに同じ事やりたいって書いてある人にレスついてないし 無理矢理やるとすれば、未コンパイル(jrxml)のままファイルを置いておいて編集してからコンパイルするってのが出来るかもしれないけど、非現実的だな あとは、できあがったPDFを編集するとかかなー Jasperreportsだけじゃ無理っぽいス JasperReportsに限った話ではないと思いますが 例えば発注書を作成するとして 長い品名があるとき皆さんはどう対応してますか? やむを得ず印字できるところまでであきらめますか それともデータを加工して改行したりしてますか >>278 大抵、jakarta commons で省略する 一回だけタックシールの印刷の時に全文字はいるようにフォントサイズの調整をした事があるなー VB6だったけど。 3.0.0で特定のキー項目をレポートグループとして定義し、「新規ページで開始」にしてあります。 さらに「ページ番号のリセット」にもチェックを付けておけば $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 日本語のイタリック、ボールドが効きません。 なにか方法ありますか? パチもんのことをバッタもんと言わないでください パチもん→コピー商品 バッタもん→倒産した会社から安く買い叩いた正規品 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる