Raspberry Pi経由でBrotherのPT-P700W(ラベルプリンター)の自動印刷を行う
以前brotherのプリンターを工場で使っていたのですが、公式の方法だとb-PACというSDKを利用していて、プログラム経由で印刷が可能だったりします。
ですが、これを利用するにはMS製品のVB or Active X(IE)が必須で、昨今のWeb技術の選定からするとちょっと「うっ」となる感じだったので代替を探していました。
(最初に利用したのはもう4年ほど前ですが、4年後の現在も公式からはこれ以外の選択肢は出てません。)
プリンターへのコマンド仕様はBrotherが開発者向けに提供していたので、野良OSSも上がっていたのですが、PTシリーズについては対応してなかったり、問題があった時に読み解くのが大変そうだったので嫌煙していました。
ですが月日が経った結果、なんといつの間にかPTシリーズの対応がされているOSSを発見しました!
今回検証のために買ったラベルプリンターはPT-P700Wというやつです。7000円台と格安です。
4倍弱ほど高いPT-900Wというモデルもあるのですが、これはラベルの解像度が倍なだけです。
用途によって使い分けるのが良いと思います。これから紹介する方法は、PT-900Wも対応しているので、モデル名を置換するだけで対応が可能なはずです(未検証)。
https://gyazo.com/c840f3f18c50960176be241f92d34038
方法の説明の前に実際に印刷した感じの写真を貼っておきます。
https://gyazo.com/d48e554be1b03b1c1d3a65beaa84f82e
24mmのラミネートラベルです。QRコードを印刷してますが、スマホのカメラで読み取れることも確認してます。
セットアップ方法
今回は brother のラベルプリンターに対応した野良ライブラリーである brother_qlを利用します。
末尾にqlとあるようにbrotherのQLシリーズのプリンターに対応していたものですが、これがPTでも利用可能になった感じです。
環境はRaspberry Pi(Raspberry Pi OSではなくて、Raspbian 10 buster)です。そのうちbalenaOSでやります。
環境によりますが、Readmeにあるようにlibusbをインストールします。
code:terminal
sudo apt-get install libusb-1.0-0
brother_qlはpipで入れるのですが、pipのリポジトリにはPTシリーズ対応版が上がってないみたいなので、直接githubにあるものをインストールします。
code:terminal
あとは、PT-P700WをRaspberry PiのUSBに接続してください。ラベルは24mmのものをセットしました。
これでセットアップの完了です。
※もしもプリンター本体のP-Liteと書いてあるボタンが光っているのであれば、長押しして消してください。
ラベルプリントの実行
https://gyazo.com/afdf443e90eace68dfa50e272fb63caa
↑の画像を適当に作成してみました。P-Touch Editorで作成やつのスクショを撮って、大きさだけ調整したものです。
解像度とか適当でも印刷できるみたいですが、まだそんなに試行錯誤してません。これをlabel.pngとして保存して、Raspberry Piに送っておきます(scpコマンド等)。
※もしかしたらScrapboxにアップしたときに大きさが変更されているかも。高さ236pxで作成していました。ただ、勝手にリサイズされるので問題なさそう。
コマンドを実行してみましょう。
code:terminal
sudo brother_ql -m PT-P750W -b linux_kernel -p file:///dev/usb/lp0 print -c -r 270 -l pt24 label.png
これで印刷されるはずです。sudoがないと権限で怒られるので注意です(pipにもsudoつけてます)。
一応オプションの説明です。
-m PT-P750W
今回利用しているものとは別の機種名を指定しているが、ラベル印刷の部分だけで言うと仕様として同等なので、これで問題ない(PT-P700Wがライブラリーのモデルのリストにないので指定できないので代替している)。
-b linux_kernel
ラベル印刷で利用するバックエンドを指定している。Raspberry Piの時はこれ。Macとかの場合はpyusbを指定するらしい。
-p file:///dev/usb/lp0
実際に利用するインターフェイスを選択する。
-c
圧縮するオプションだが、なぜかPTシリーズだとこれがないとラベルが欠けるので指定している。Issueで指定されていた。
-r 270
回転方向を指定する。たまたま↑にあるサンプルのラベル(label.png)だと向きが違ったので、この様に指定している。
-l pt24
PT用にラベルサイズを指定している。これによって、(おそらく)PTシリーズの24mmラベルを指定出来ている。元々固定長のQLシリーズの感熱ラベルのサイズを指定するオプションだが、上記の様に指定すると可変長のラベルが指定可能になる。
以上です。