帳票の全体位置を調整する方法はありますか?

1,792 views
Skip to first unread message

荒川雄介

unread,
Sep 7, 2012, 10:30:15 AM9/7/12
to japan-jasperse...@googlegroups.com
帳票の全体位置を一気に動かすような方法はないでしょうか?

今のところ全体位置を動かす方法は
1.Header余白を増やし、同じぐらいFooter減らすを減らす

2.全てのx座標、y座標に+5するといった作業をする。
  勿論、Page Header Band、Page Footer Band 、Detail Band自体にも
  同じ値を足す

ぐらいしか思いつきません。
何かいいアイディアはないでしょうか?


 統一伝票は今ある罫線などの入った紙にドットプリンタで印字して
位置をピッタリ合わせる必要があります。

 しかし、いくら位置を合わせたとしてもプリンタが変わると印字位置は
ずれてしまいます。
原因は、印字開始位置がプリンタによって違うからです。

 逆に言うと一度特定のドットプリンタで合わせれば
位置関係は正確なので全体にずらすだけで、
どんなドットプリンタでも簡単に位置あわせができるようになります。

 これはかなりメリットがあります。
統一伝票は文字通り統一された伝票ですので一から作らなくても、
私が作った伝票を活用して頂ければいいことになります。

 例えばスーパーの帳票を作りたければ作ってある
チェーンストア統一伝票に項目を足して全体位置を今使っている
ドットプリンタに合わせれば完成となります。

 AdempiereやOpenBravoの人達も、統一伝票を求めていると思いますよ。
だって、商社だと絶対に複写の統一伝票を扱うことになるのですから。
このサンプルを完成させれば我々の武器になりえます。


荒川雄介

unread,
Dec 18, 2012, 1:26:14 AM12/18/12
to japan-jasperse...@googlegroups.com

Page Header Bandの高さの増減で位置を変える
  • Page Header Band
  • Detail Band
  • Page Footer Band
があったとしよう。
各Bandに置かれているElementsはBandの位置に対して何pxという
置き方をされている。

Detail Bandの縦位置を変更したい場合は、
単純にPage Header Bandを多くするか少なくするかで位置を変えることができる。 iReport実践ガイド p79 を参照

Frameを使う
後はXML表示にしてFrameタグで囲ってしまえば、 そのBandにある全てのElementsをFrameで囲ってしまうことができるだろう。 フレームで囲ってしまえばフレームに他のElementsが付いていきますので、 上下左右、簡単に、全体位置位置を変更することができる。
但し、Band内だけです。

Page Footerは? Page Footer Bandは用紙の一番下から何pxの位置までを使うといった使い方を行います。
Detailの行の増減には影響しますが。Detailの高さにはそれ程、影響を及ぼしません。

基礎技術はだいたい分かった。 後は、これをどういう段取りでやるかですね…。

荒川雄介

unread,
Jan 11, 2013, 6:58:40 PM1/11/13
to japan-jasperse...@googlegroups.com

実際にiRepotでXML編集にしてFrameタグで囲めるか実験してみました。

添付のファイルはフレームがある場合と無い場合のjrxmlファイルです。
zip解答してお使いください。

XML編集でFrameタグを囲む


始めに

 作成する前にフレームで囲ってやればいいんでしょうけど、
そんなわけにはいかないことも多いでしょう。
全体位置を移動させるという仕事が無ければ、フレームの素晴らしさは実感できないです。
でも、フレームに載せるためだけに始めからElementsを置き直すのも面倒です。

XMLファイルを直接編集すれば

 XML編集形式にしてFrameタグで囲えば、
Elementsを置き直すこともなく楽にFrameに全てのElementsを乗っけることができるかもしれません。
そこで、簡単な実験をして検証してみたいと思います。

実験開始

実験ファイルを準備

Detail Bandだけ
A4縦のPage Formatを作成
最初にFrameを全域に広げておく。
その上にStatic Textを1つ適当な場所に配置。
XML編集形式で覗(のぞ)く。
添付ファイル
frame.jrxmlを参照

結果

<frame>
<reportElement uuid=”” x=”” y=”” width=”” height=””/>
</frame>
で囲むのは正解。
削除して起動させると、勝手にuuidを生成するようだ。
無くても追加してくれそうです。

もう一つは
Detail Bandだけ
A4縦のPage Formatを作成
ElementsにはStatic Textを1つ適当な場所に配置
これをElementsで囲む。
添付ファイル
no_frame.jrxml でやってみて下さい。

XML編集で
<frame>
<reportElement x=”” y=”” width=”” height=””/>
</frame>
でStatic Text Elementsを囲む実験成功!
uuidを抜いても自動的に生成します。


frame_tag_test.zip
Message has been deleted

荒川雄介

unread,
Jan 15, 2013, 2:33:59 AM1/15/13
to japan-jasperse...@googlegroups.com

GUIでFrameの上にStatic Textを載せる

XMLで編集しなくともFrameの上にStatic TextなどのElementsを載せることができます。

以下にやり方を示します。

添付ファイル frame1.zipを解凍したframe1.jrxmlをご覧下さい。

Static Textの後にFrameが置かれていますが、Static Textは
Frameに乗っかっておりません。

Report InspectorでStatic Textを選択して、

Frameにドラッグします。

すると、Frameの中にStatic Textが表示されるようになり、

Frameを動かすとStatic Textも同時に動くようになります。




frame1.zip
Reply all
Reply to author
Forward
0 new messages