添付ファイル
lpr.r (1.9 KB)

コマンドの混同を防ぐため、シェルスクリプトのコマンドには $ を文頭に入れています。

R でサーマルプリンタを利用する

準備

ドライバのインストール

CITIZEN ドライバーダウンロード から CUPS ドライバー(対応OS:Linux/Mac OSX) → Mac OSX ドライバーインストール用ファイルをダウンロードしてインストールする。 システム環境設定より、従来のプリンタインストールと同じ要領でインストールを行う。

ターミナルで

$ lpstat -s

と実行すると、コマンドベースでプリンタを指定するための正確なプリンタ名の一覧が表示される。

システムのデフォルトの送信先: NEC_Color_MultiWriter_5800C__2C_45_3E_
CITIZEN_CT_S601のデバイス: usb://CITIZEN/CT-S601?serial=00000000
...(後略)

この出力で得た CITIZEN_CT_S601lpr.r

# プリンタの指定
.printerName = "CITIZEN_CT_S601"

と代入する。

R から print 関数実行結果を出力する

lpr.rsource 文などで読み込み、

printTP(lynx)

を実行すると

lynx (この部分は太字)
Time Series:
Start = 1821 
End = 1934 
Frequency = 1 
  [1]  269  321  585  871 1475 2821 3928 5943
  [9] 4950 2577  523   98  184  279  409 2285
 [17] 2685 3409 1824  409  151   45   68  213
 [25]  546 1033 2129 2536  957  361  377  225
 [33]  360  731 1638 2725 2871 2119  684  299
 [41]  236  245  552 1623 3311 6721 4254  687
 [49]  255  473  358  784 1594 1676 2251 1426
 [57]  756  299  201  229  469  736 2042 2811
 [65] 4431 2511  389   73   39   49   59  188
 [73]  377 1292 4031 3495  587  105  153  387
 [81]  758 1307 3465 6991 6313 3794 1836  345
 [89]  382  808 1388 2713 3800 3091 2985 3790
 [97]  674   81   80  108  229  399 1132 2432
[105] 3574 2935 1537  529  485  662 1000 1590
[113] 2657 3396

通常の print 関数同様の結果がサーマルプリンタから出力される。print 関数のラッパーなので、引数は受け渡される。

R の plot を出力する

beginTP()

を実行した後、

plot(lynx)

などすべての plot が完了したら、

endTP()

とするとサーマルプリンタから作図が出力される。 endTP(2) とすると2部印字される。

beginTP 関数は pdf 関数のラッパーなので widthheight などのオプションも指定可能であるが、正方形に近い PDF サイズでないと初期オプションでは縮小される。

endTP 関数の内部で用紙サイズの指定を X80MMY80MM の 80 mm × 80 mm に指定しており、また、fit-to-page オプションで「用紙サイズに合わせて拡大縮小」をしている。必要であれば、用紙サイズやオプションは適宜変更されたい。

$ lpoptions -p CITIZEN_CT_S601 -l

を実行すると、

PageSize/Media Size: X52D5MMY20MM X52D5MMY30MM X52D5MMY40MM X52D5MMY50MM X52D5MMY60MM X52D5MMY70MM X52D5MMY80MM X52D5MMY90MM X52D5MMY100MM X52D5MMY110MM X52D5MMY120MM X52D5MMY130MM X52D5MMY140MM X52D5MMY150MM X52D5MMY160MM X52D5MMY170MM X52D5MMY180MM X52D5MMY190MM X52D5MMY1000MM X52D5MMY2000MM X54D5MMY20MM X54D5MMY30MM X54D5MMY40MM X54D5MMY50MM X54D5MMY60MM X54D5MMY70MM X54D5MMY80MM X54D5MMY90MM X54D5MMY100MM X54D5MMY110MM X54D5MMY120MM X54D5MMY130MM X54D5MMY140MM X54D5MMY150MM X54D5MMY160MM X54D5MMY170MM X54D5MMY180MM X54D5MMY190MM X54D5MMY1000MM X54D5MMY2000MM X72MMY20MM X72MMY30MM X72MMY40MM X72MMY50MM X72MMY60MM X72MMY70MM X72MMY80MM X72MMY90MM X72MMY100MM X72MMY110MM X72MMY120MM X72MMY130MM X72MMY140MM X72MMY150MM X72MMY160MM X72MMY170MM X72MMY180MM X72MMY190MM X72MMY1000MM X72MMY2000MM X80MMY20MM X80MMY30MM X80MMY40MM X80MMY50MM X80MMY60MM X80MMY70MM X80MMY80MM X80MMY90MM X80MMY100MM X80MMY110MM X80MMY120MM X80MMY130MM X80MMY140MM X80MMY150MM X80MMY160MM X80MMY170MM X80MMY180MM *X80MMY190MM X80MMY1000MM X80MMY2000MM Custom.WIDTHxHEIGHT
PaperMedia/Paper Media: *0Normal 1Label
PaperType/Paper Type: *0Receipt 1Ticket
CashDrawer/Drawer Type: *0NoDrawer 1Drawer1 2Drawer2
CashDrawerPulseWidth/Drawer Pulse Width: 0DrawerPulse50 1DrawerPulse100 2DrawerPulse150 *3DrawerPulse200 4DrawerPulse250 5DrawerPulse300 6DrawerPulse350 7DrawerPulse400 8DrawerPulse450 9DrawerPulse500
CutterMode/Normal Paper (Page/Job): 0NoNo 1NoPartial 2NoFull *3PartialPartial 4PartialFull 5FullFull
FeedMode/Label/BM Paper (Page/Job): *0NoNo 1NoCut 2CutCut
BuzzerStart/Start Job Beeps: *0Beeps 1Beeps 2Beeps 3Beeps 4Beeps 5Beeps 6Beeps 7Beeps 8Beeps 9Beeps
BuzzerEnd/End Job Beeps: *0Beeps 1Beeps 2Beeps 3Beeps 4Beeps 5Beeps 6Beeps 7Beeps 8Beeps 9Beeps

すべてのプリントオプションが表示される。 例えば、endTP 関数内部の

system(paste0("lpr -P ", .printerName, " ", .hiddenFileName, " -#", opcopy, " -o media=X80MMY80MM -o fit-to-page", collapse = ""))

の部分に -o CutterMode=1NoPartial を追記すれば、ページごとにカッターは作動しなくなり、連続した 1 枚の紙となる。

サーマルプリンタの活用(平文の出力編)サーマルプリンタの活用(補遺編)につづく