ラベルのカスタマイズ
ラベルのレイアウトをカスタマイズしたいという要望は必ず出るでしょうからカスタマイズ方法について説明します。
意外と大きい、レイアウト作成の負担
ここでも一般論から始めますが、システム開発のテーマの中には、ユーザー側と開発者側で問題の大きさに対する認識が極端にずれるものがあります。
帳票やラベルのレイアウトの開発は代表的な例で、開発の手間は非常に大きいものの、ユーザー側からみればそんなのは簡単にできるのでは?と解されることが少なくありません。
このセクションをお読みになる方がどの立場であるかは判りませんが、いずれにせよ、
- 作業の前にはいつでも手戻しができるようにバックアップをとってから行うこと
- 本番機のデータに安易に手を出さないこと
は必ず守ってください。
ラベルはプログラミングされている
すでに説明されているように、RADIREC WSではラベルデータはSVG形式あるいはJPEG形式で提示されますが、SVG形式でデータを作成するところが出発点となっています。
レポートはSVGのテンプレートで作成されていますが、ラベルはプログラムで作成されています。 これは、開発の効率を考慮したためで、
- イラストレーションを含むレポートでは、SVGで管理した方が合理的である
- バーコードを動的に配置するラベルでは、プログラミングが合理的である
ことから、こうなっています。
逆ポーランド型のスクリプト
ラベル部分のプログラムは、ソースコードツリーの中の/API7/label.meme/main.mmt ファイルに記述されています。
Ver.7.0の時点では以下のようなコードになっています。
SVG
384 390 canvas
0 0 0 color
'DEFAULT' 17 FONT
'0' 255 255 255 DEFCOLOR
'1' 0 0 0 DEFCOLOR
-(0,0) -(383,383) RECT
-(0,20) origin
'DEFAULT' 17 FONT
\"RADIREC.\" -(0,0) 0 0 STRING
today -(220,0) 0 0 STRING
-(2,24) moveto /control jan1 jan2 1 2 36 pattern
\"検査#: $/control.\" -(0,73) 0 0 STRING
-(300,68) moveto
\"http://radirec.com/reportview.html?control=$/control.\" \"M\" 4 qrcode 2 2 pattern
-(0,170) origin
'DEFAULT' 8 FONT
\"切り取ってカルテに貼付して下さい\" -(0,0) 0 0 STRING
'DEFAULT' 8 FONT
\"- - - - - - - - - - - -- - - - - - - - - - - -(切り取り)- - - - - - - - - - - - - - - - - - - - - - \" -(0,10) 0 0 STRING
-(0,200) origin
'DEFAULT' 17 FONT
\"RADIREC.\" -(0,0) 0 0 STRING
today -(220,0) 0 0 STRING
-(2,24) moveto /control jan1 jan2 1 2 36 pattern
\"検査#: $/control.\" -(0,73) 0 0 STRING
-(300,68) moveto
\"http://radirec.com/reportview.html?control=$/control.\" \"M\" 4 qrcode 2 2 pattern
'DEFAULT' 8 FONT
\"RADIREC.com\" -(0,140) 0 0 STRING
ソースコード中、以下はよくあるプログラミング言語の規定に倣っています。
- 数値はそのまま、文字列はシングルあるいはダブルクォート
- ♯ で始まる行は、その行の終わりまでコメントとなる
- 四則演算は +, -, *(アスタリスク), /(スラッシュ)
冒頭部について、ソースコード中に←記号で説明を入れますと、
SVG ←出力がSVGとなるように指定 ※これ以外は禁止です
384 390 canvas ←ラベルの大きさ(単位はピクセル)
0 0 0 color ←印刷する色を指定。Red Green Blueの順。ここでは黒となる
'DEFAULT' 17 FONT ←印刷する文字サイズ。17ポイント
'0' 255 255 255 DEFCOLOR ←カラーコード0の色を定義
'1' 0 0 0 DEFCOLOR ←カラーコード1の色を定義
ここは変更しないで下さい。
カラーコードと言っているのはバーコードなどのパターングラフィックスで用いる色コードです。RADIREC WSでは単色のサーマルプリンタを想定しているため、0と1の二色しかありません。
*近年、フルカラーのサーマルプリンターもあります
-(0,0)
のような表記は、座標を -(x,y)のように指定しています。
-(100,10) origin
のようにoriginと書いているところは絶対座標を指定しており、原点を移動。その他の -(x,y)はすべてoriginで指定した原点からの相対座標を指定しています。
グラフィックス描画命令はいくつか登場していますが
命令語 | 機能 |
---|---|
RECT | 矩形を描きます |
FRECT | 塗りつぶし矩形を描きます |
STRING | 文字列を描きます |
PATTERN | パターンを描きます |
/control
のような表記は、APIとして受け取ったパラメーターを取り出します。この場合はトークンの文字列が提示されます。
文字列中、$/control. のように表記されている部分は文字列にパラメーターの値を埋め込むために使用します。
バーコード関連命令
バーコードの処理は文字列計算によって作成された文字列を、PATTERN命令でグラフィックスに変換しています。事例には書かれていませんが、RADIREC WS用のバーコードエンジンでは以下のようなバーコード処理のバリエーションが用意されています。
命令語 | 機能 |
---|---|
JAN1 | JANコードとして正しい文字列に補正する。具体的にはチェックデジットをつける |
JAN2 | JANコードをPATTERN用の文字列に変換する |
QRCODE | 文字列をQRコードのPATTERN文字列に変換する |
NW7 | 文字列をNW7コードのPATTERN文字列に変換する |
CODE128 | 文字列をCODE128コードのPATTERN文字列に変換する |