brother(ブラザー)のラベルプリンタTD-4100Nを使ったラベル印刷機能の開発

お客様からの要望で運用中のシステムにbrother(ブラザー)のラベルプリンタTD-4100Nを使ったラベル印刷機能を加えることになった。

Unnamed_2 導入の際の機種選定のポイントになったのは以下の通り。

  • A4サイズのラベルを使えば、これまで利用していたプリンタでも使えるが、余りが出てしまいもったいない。
  • ラベル1枚にかかるコストは1円~多くても3円未満。
  • ネットワークで利用できる。

さらにTD-4100Nには既存システムとの接続可能性として以下の3択があった。

  1. データ渡し:プリンタ付属の印刷ソフトへCSV形式などでデータを渡す方法。(さらにこの付属ソフトは機能が豊富でデータベースへODBC経由で接続したり、あるいはアクセスなどのデータベースファイルからテーブルやクエリが直接参照できることがわかった。)
  2. 既存のレポート機能の利用:現在運営中のシステムでは帳票出力にアクセスレポート機能を使っている。このレポート出力機能によりラベル印刷帳票を作成する。システム側からボタン一つで呼び出せる使いかっての良さがあるが、ラベルプリンタに細かな指示・コマンドが送れないデメリットもある。
  3. 開発コンポーネントの利用:このラベルプリンタには開発コンポーネントb-PACが提供されている。当然、細かな指示・コマンドを送ることも可能であるが、2のアクセスレポートのようにお手軽ではない。そのため開発コストがかかる。また配布にあたってはアクセスだけでなく、このコンポーネントもあわせて送る必要があり、新たにインストール作業が必要となる。

今回のシステムは配送先拠点が全国にあって、その拠点に届いたものが利用者に配られる仕組みである。ラベルは配送先名と利用者名、さらに配送物のこぐち数が総数と通し番号で表記されている。

ポイントとしてはラベルプリンターのオートカッター機能である。プリンタドライバで指定できるものは「1枚ずつ」か「最後だけ」である。初期値は「1枚ずつ」。また「最後だけ」に指定しても次印刷するときはまた初期値に戻る。設定が保存されないことはサポートセンターにも確認した。お客様の要望は「配送先別」。「1枚ずつ」ではバラバラになって並べ替える作業が発生する可能性があり、「最後だけ」ではあとの作業が分担できず、ハサミなどで切る必要があるので、やはり「配送先別」である必要があった。

ということで、上記の1,2案はダメで3案の開発コンポーネントを利用することとなった。細かなところは割愛するとして、上記の「配送先別」を実現するには以下のようにソースコードを書けばいい。

        【配送先別ループ】
        objDoc.StartPrint "", bpoCutAtEnd
        objDoc.PrintOut 1, bpoCutAtEnd
        objDoc.EndPrint
        【ループ終わり】

カットするオプションはStartPrint 及び PrintOut コマンドで指定する。TD-4100Nで指定できるのはbpoAutoCut(1枚ずつ)、bpoCutAtEnd(最後のみ)の2つ。すなわちプリンタドライバで指定できるものと同じ。ここでは、bpoCutAtEndを指定しておく。配送先ごとにEndPrintコマンドで「終了の合図」を送ってやればプリンタは最後と判断してカットしてくれる。そして新しい配送先には再度StartPrintから始めればいいのである。

ちなみに開発コンポーネントを利用する場合でもラベルのレイアウトは付属のラベル印刷ソフトを使う。

さきほど無事開発を終えた。あとは納品を待つばかり!!