thinreports
thinreports copied to clipboard
Barcode
これは v1.0 における 機能の実装コンセプト であり、この内容を基にユーザからのフィードバックを得てよりよい仕様を議論し、 導き出すことが目的。コメント欄での議論により、内容は適宜更新される。また、技術的な制約など、実際の機能が必ずしもコンセプト通りになるとは限らない。
モチベーション
仮説
- バーコードを印字したいという要望が多い
- その中でも JAN (EAN) とカスタマーバーコードのニーズが高い
現状
- Thinreports 自体にバーコードを描画する機能はない
- barby などのライブラリを使ってバーコード画像を作成し、イメージブロックで埋め込むことは可能
問題点
- バーコード画像の生成方法にもよるが、遅い・メモリ消費大のため大量ページ印刷には向かない
- Ruby のバーコードライブラリで良さそうなものがない
- カスタマーバーコードに対応しているバーコードライブラリがない
機能
概要
- バーコード機能のネイティブサポート
- 受け取った値からバーコードを描画する
1.0 時点で対応するバーコード
- JAN-13(EAN)
- 追加シンボル(アドオンコード)には対応しない
- JAN-8
- カスタマーバーコード
- 縦(上から下)は対応しない
流れ
1. レイアウト
2. コード
report = Thinreports::Report.new layout: 'barcode-sample'
report.start_new_page do |page|
page.item(:jan_13).value = '4912345678904'
page.item(:jan_8).value = '49123494'
# e.g. 東京都台東区台東5-6-3 ABCビル10F
page.item(:customer).value = 'STC11000165-6-3-10CC4CC4CC4CC4CC49SPC'
end
機能詳細
バーコードオブジェクトのプロパティ
説明 | 初期値 | 動的に変更 | |
---|---|---|---|
左位置・上位置 | 左・上の座標 | x | |
幅 | バーコードの幅。規格外の幅も指定できる。 | x | |
高さ | バーコードの高さ。規格外の高さも指定できる。 | x | |
表示 | 初期の可視状態 | o | |
ID | オブジェクトの ID。必須 | barcode | x |
説明 | オブジェクトの説明。レイアウト定義ファイルに表示される。 | x |
Generator での操作
- テキストブロックと同様に、 ID を指定して値をセットする:
page.item(:jan_8).value = '12345678'
- 値がセットされなかったバーコードは表示されない
- プロパティやスタイルの操作も、他のオブジェクトと同様
page.item(:jan_8).hide
page.item(:jan_8).show
page.item(:jan_8).visible(true)
オブジェクトスキーマ
{
"id": "",
"type": "barcode",
"format": "jan-13" or "jan-8" or "customer",
"x": 0.0,
"y": 0.0,
"width": 0.0,
"height": 0.0,
"description": "Description for shape",
"style": {
"display": true
}
}
参考資料
- JIS の閲覧 - JISC 日本工業標準調査会
- JAN の場合は
X0507
で JIS検索
- JAN の場合は
- 郵便番号・バーコードマニュアル
バーコードオブジェクトの描画方法とカスタマーバーコードのコードを追記しました。