sophieデータ出力機構マニュアル
last update: Tue, 13 Aug 2024 04:30:12 GMT ( 8 months ago )

            fn.lib.report モジュール

            fn.lib.report は、帳票出力の際のレイアウト定義を簡易に記述するためのAPI群になります。
            ・APIを利用しない場合の記述
                var XLSH = 4;
            pat.push(['text', "2020/03/03", {
            x: 0,
            y: 0,
            width: 25,
            height: XLSH,
            align: 'right',
            valign: 'middle'
            }]);
            // 画像を配置したい場合
            // shain.tanto_in : SVG or URL
            pat.push(["image", "=shain.tanto_in", {
            x: 72, y: 0.5, width: XLSH * 4.5, height: XLSH * 4.5
            }]);
            ・APIを利用した場合の記述
                //一つのエリアに文字列を出力したい場合
            pat.push(["text", "受領印", L(70, 2, 22, "center", null, {fill: "#ccc", "font-weight": 900, "font-size": "12px"})]);
            // 複数のセルと行を出力する場合
            pat = []; // 初期化
            lines = []; // 初期化
            lines.push(line = []);
            line.push(["",8],["=user.nm", 102]);
            lines.push(line = []);
            line.push(["",8],["=user.tanto.shozoku", 102]);
            lines.push(line = []);
            line.push(["",8],["=user.tanto.nm", 102]);
            lines.push(line = []);
            line.push(["",8],["",65]);
            lines.push(line = []);
            line.push(["",80], ["御中",10]);
            lines.push(line = []);
            line.push(["",8],["TEL", 7, "center"], ["=user.phone_no",34], ["FAX",7,"center"], ["=user.fax_no",34],["",60],["=user.cd",30,"right"]);
            lines.forEach(function(line, i) {
            SetLineNonBDR(pat, line, 0, i + 3);
            });

            • API

              fn.lib.report を利用するためには帳票RSDの冒頭に以下の記述をすることをおすすめします。
                    var rpt = fn.report;
              var L = rpt.L;
              var L1 = rpt.L1;
              var L2 = rpt.L2;
              var L3 = rpt.L3;
              var L4 = rpt.L4;
              var Lsum = rpt.Lsum;
              var Vtcl = rpt.Vtcl;
              var Line = rpt.Line;
              var Line_d = rpt.Line_d;
              var SetLine = rpt.SetLine;
              var SetLineNonBDR = rpt.SetLineNonBDR;
              var SetBox = rpt.SetBox;
              関数名構文、説明
              XLSH
                rpt.XLSH(4); 
              帳票の1行の高さを数値で指定します。(行間を広めにしたい時等に設定)。
              デフォルトは 4 になります。
              L
                L(x, y, w, a, va, opts)
              もしくは
                rpt.L(x, y, w, a, va, opts)
              セルの定義のオプションを取得する関数になります。
              引数:
              x : x 座標(ミリ単位)
              y : y 座標(行位置)
              w : 幅(ミリ単位)
              a : 横位置(left , center, right)
              va : 縦位置(top, middle, bottom)
              opts : オプション(スタイル等)
              ※ 横位置に left を指定すると padding をとるために x 座標を 1mm ずらします。
              ※ 横位置に right を指定すると padding をとるために 幅を 1mm 減らします。
              ※ オプションに row_height を指定すると指定した行高さ(height)に調整されます。
              ・サンプル
                pat.push(["text", "=head.user.adr.adr", L(8, 1, 82, "left", "top")]);
              L1
                L1(x, w, a)
              もしくは
                rpt.L1(x, w, a)
              1行目のセルの定義のオプションを取得する関数になります。(ほぼ未利用)
              引数:
              x : x 座標(ミリ単位)
              w : 幅(ミリ単位)
              a : 横位置(left , center, right)
              ※ y 座標は0(1行目)固定になります。
              ※ 横位置による、padding 調整はされません。
              ※ 縦位置は "bottom" 固定になります。
              ・サンプル
                pat.push(["text", "=head.user.adr.adr", L1(8,  82, "left")]);
              L2
                L2(x, w, a)
              もしくは
                rpt.L2(x, w, a)
              2行目のセルの定義のオプションを取得する関数になります。(ほぼ未利用)
              引数:
              x : x 座標(ミリ単位)
              w : 幅(ミリ単位)
              a : 横位置(left , center, right)
              ※ y 座標は1(2行目)固定になります。
              ※ 横位置による、padding 調整はされません。
              ※ 縦位置は "bottom" 固定になります。
              ・サンプル
                pat.push(["text", "=head.user.adr.adr", L2(8,  82, "left")]);
              L3
                L3(x, w, a)
              もしくは
                rpt.L3(x, w, a)
              3行目のセルの定義のオプションを取得する関数になります。(ほぼ未利用)
              引数:
              x : x 座標(ミリ単位)
              w : 幅(ミリ単位)
              a : 横位置(left , center, right)
              ※ y 座標は2(3行目)固定になります。
              ※ 横位置による、padding 調整はされません。
              ※ 縦位置は "bottom" 固定になります。
              ・サンプル
                pat.push(["text", "=head.user.adr.adr", L3(8,  82, "left")]);
              L4
                L4(x, w, a)
              もしくは
                rpt.L4(x, w, a)
              4行目のセルの定義のオプションを取得する関数になります。(ほぼ未利用)
              引数:
              x : x 座標(ミリ単位)
              w : 幅(ミリ単位)
              a : 横位置(left , center, right)
              ※ y 座標は3(4行目)固定になります。
              ※ 横位置による、padding 調整はされません。
              ※ 縦位置は "bottom" 固定になります。
              ・サンプル
                pat.push(["text", "=head.user.adr.adr", L4(8,  82, "left")]);
              Lsum
                Lsum(x, w, a)
              もしくは
                rpt.Lsum(x, w, a)
              1行目の合計欄用のセルの定義のオプションを取得する関数になります。(ほぼ未利用)
              引数:
              x : x 座標(ミリ単位)
              w : 幅(ミリ単位)
              a : 横位置(left , center, right)
              ※ y 座標は0(1行目)固定になります。
              ※ 横位置による、padding 調整はされません。
              ※ 縦位置は "bottom" 固定になります。
              ・サンプル
                pat.push(["text", "=head.user.adr.adr", Lsum(8,  82, "left")]);
              Vtcl
                Vtcl(x, y, w, a)
              もしくは
                rpt.Vtcl(x, y, w, a)
              縦書きセルの定義のオプションを取得する関数になります。(ほぼ未利用)
              引数:
              x : x 座標(ミリ単位)
              y : y 座標(行位置)
              w : 幅(ミリ単位)
              a : 横位置(left , center, right)
              ※ y 座標2は、y +2行の固定になります。
              ※ 横位置による padding の調整はされません。
              ※ 縦位置は、middle 固定になります。
              ・サンプル
                pat.push(["text", "=head.user.adr.adr", Vtcl(8, 1, 82, "left")]);
              Line
                Line(x1, y1, x2, y2, w, h, opts)
              もしくは
                rpt.Line(x1, y1, x2, y2, w, h, opts)
              指定した範囲に罫線を引くセルの定義を取得する関数になります。
              引数:
              x1 : x 座標(ミリ単位:開始位置)
              y1 : y 座標(行位置:開始位置)
              x2 : x 座標(ミリ単位:終了位置)
              y2 : y 座標(行位置:終了位置)
              w : 幅(ミリ単位)
              h : 太さ(ミリ単位)
              opts : オプション(スタイル等)
              ・サンプル
                pat.push(Line(8, 1, 82, 3, 1)]);
              Line_d
                Line_d(x1, y1, x2, y2, w, h)
              もしくは
                rpt.Line_d(x1, y1, x2, y2, w, h)
              指定した範囲に波線を引くセルの定義を取得する関数になります。
              引数:
              x1 : x 座標(ミリ単位:開始位置)
              y1 : y 座標(行位置:開始位置)
              x2 : x 座標(ミリ単位:終了位置)
              y2 : y 座標(行位置:終了位置)
              w : 幅(ミリ単位)
              h : 太さ(ミリ単位)
              ・サンプル
                pat.push(Line_d(8, 1, 82, 3, 1)]);
              SetLine
                SetLine(pat, line, x, y, dush, row_height)
              もしくは
                rpt.SetLine(pat, line, x, y, dush, row_height)
              行単位でArray(配列)を渡し、L関数をまとめて呼び出す関数。
              引数:
              pat : pattern 用配列
              line : 行の設定配列([value, w, a, va, opts])
              x : x 座標(ミリ単位)
              y : y 座標(行位置)
              dash : 行の下罫線を波線にするかどうかのフラグ
              row_height : 行高さ
              ・サンプル
                    var line = [];
              line.push(["",8],["〒", 4, "center"], ["=head.user.adr.zip_no", 14, "center"]);
              SetLine(pat, line, 0, 0);
              SetLineNonBDR
                SetLineNonBDR(pat, line, x, y)
              もしくは
                rpt.SetLineNonBDR(pat, line, x, y)
              行単位でArray(配列)を渡し、L関数をまとめて呼び出す関数。
              ※各セルごとに下線を引かない。
              引数:
              pat : pattern 用配列
              line : 行の設定配列([value, w, a, va, opts])
              x : x 座標(ミリ単位)
              y : y 座標(行位置)
              ・サンプル
                    var line = [];
              line.push(["",8],["〒", 4, "center"], ["=head.user.adr.zip_no", 14, "center"]);
              SetLineNonBDR(pat, line, 0, 0);