CUBE SUGAR CONTAINER

技術系のこと書きます。

Mac: コマンドラインでプリンタを操作する

ちょっとまとまった量の書類を印刷する機会があって、手作業は大変だからターミナルで作業したいなと思った。 今回は、そのとき調べた内容について書いておく。 尚、操作するプリンタのドライバ等は既にインストールした状態を前提にしている。

使った環境は次の通り。

$ sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G1217

プリンタの一覧を取得する

まずは、操作するプリンタの名称を取得する必要がある。 これには lpstat コマンドに -s オプションをつけて実行する。

$ lpstat -s
システムのデフォルトの送信先:Canon_iP2700_series
Canon_iP2700_series のデバイス:usb://Canon/iP2700%20series?serial=XXXXXX

上記の出力で「〜のデバイス」となっている中の「〜」がプリンタの名前になっている。 例えば、上記なら「Canon_iP2700_series」がそれに当たる。

プリンタを使って印刷する

実際にプリンタを使って印刷するときは lpr コマンドを使う。 印刷に使うプリンタは -P オプションで指定する。 つけなければデフォルトの送信先になるかな。

$ lpr -P <プリンタ名> <ファイル名>

例えば、先ほどのプリンタを例にすると、こんな感じ。

$ lpr -P Canon_iP2700_series sample.pdf

コマンドラインで実行できれば、あとは好きに操作を自動化できる。 例えば現在の作業ディレクトリにあるファイル (pdf とか) をすべて印刷したいなら、次のようにしたり。

$ for i in $(ls); do lpr -P Canon_iP2700_series $i; done;

プリンタの設定を変更する

プリンタの設定は lpoptions コマンドで行う。 使っているプリンタで設定できる項目の一覧を取得したいときは -l オプションをつけて実行しよう。 対象のプリンタは -p オプションで指定する。

$ lpoptions -p Canon_iP2700_series -l
ColorModel/Color Model: *RGB16
CNIJProfileID/ProfileID: *1 2 3 4 5 6
Resolution/Output Resolution: 300x300dpi *600x600dpi
PageSize/PageSize: Letter Letter.FullBleed Legal A5 *A4 A4.FullBleed B5 4x6 4x6.FullBleed 4x8 4x8.FullBleed 5x7 5x7.FullBleed 8x10 8x10.FullBleed 89x127mm 89x127mm.FullBleed Postcard Postcard.FullBleed DoublePostcard Env10 EnvDL EnvYou4 98x190mm 55x91mm 55x91mm.FullBleed 101.6x180.62mm 101.6x180.62mm.FullBleed Custom.WIDTHxHEIGHT
CNIJCartridge/BJ Cartridge: 1 2 *4
CNIJMediaType/Media Type: *0 50 52 51 42 22 28 16 56 27 54 7 18 8 36
CNIJMediaSupply/Paper Source: *7
CNIJPrintQuality/Quality: 0 5 *10 15 20
CNIJDitherPattern/Halftoning: 2560 *2595
CNIJGrayScale/Grayscale Printing: *0 1 2
CNIJGamma2/Brightness: 14 *18 22
CNIJAmountOfExtension/Amount of Extension: 0 1 *2 3
CNIJMarginType/MarginType: *0 1
CNIJPaperGapCommand/PaperGapCommand: *10
CNIJDiscTrayForm/DiscTrayForm: *10
CNIJBanner/Banner: *5
CNIJDuplexPrinting/Duplex Printing: *0
CNIJSGColorMode/SGColorMode: *127
CNIJISaveMode/ISaveMode: *30
CNIJMediaGroup/MediaGroup: *99
CNIJDuplexSurface/DuplexSurface: *0
CNIJDataDirection/DataDirection: *0
CNIJSpecialMode/SpecialMode: *0
CNIJManualSelectSupply/ManualSelectSupply: *10
CNIJIntent2/Color Mode: *1 3
CNIJBlackAdjustment/BlackAdjustment: *10
CNIJEmergencyMode/EmergencyMode: *127
CNIJLongLifeMode/LongLifeMode: *30
CNIJCartridgeSelect/CartridgeSelect: *1
CNIJPrintMode2/Print Quality: 1 *2 3 5
CNIJPZVividPosiProcess/Vivid Photo: *0 2048
CNIJGrayScaleCheckBox/Grayscale Printing: *0 1
CNIJPQualitySlider/Quality: 1 2 *3 4 5
CNIJHalfToneRadio/Halftoning: 1 *2
CNIJMediaSupplyMenuItem/MediaSupplyMenuItem: *1
CNIJDuplexPrintArea/Print Area: 0 *1
CNIJProfileType/ProfileType: 0 *1
CNIJPDEEnable/PDEEnable: 0 *1
CNIJRGB2GrayConvert/RGB2GrayConvert: *0 1
CNIJAutoDuplexCheckBox/AutoDuplexCheckBox: *0 1
CNIJPreviewSampleType/Sample Type: *1 3 4
CNIJColorPatternCheckBox/View Color Pattern: *0 1
CNIJColorAdjustMode/ColorAdjustMode: *1
CNIJMediaSense/MediaSense: *10
CNIJStapleSide/Stapling Side: *1 2 3 4
CNIJExtDDIStapleMarginSupport/ExtDDIStapleMarginSupport: *1
CNIJExtDDISupportAppType/ExtDDISupportAppType: *1
CNIJTableSwitchInfo/TableSwitchInfo: *0

上記はプリンタ固有の設定項目なので、使用するプリンタの機種ごとに異なる。

モノクロ印刷の設定をしてみる

設定例として、カラーインクがもったいないのでモノクロ印刷がしたい場合を考えてみよう。 そのときは、まず関連しそうな項目を上記の出力から探す。

今回使っているプリンタでは GrayScale という文字列の入った項目が該当しそうだ。 例えば CNIJGrayScale/Grayscale Printing という項目には 0, 1, 2 という三つの設定値がある。

$ lpoptions -p Canon_iP2700_series -l | grep -i gray
CNIJGrayScale/Grayscale Printing: *0 1 2
CNIJGrayScaleCheckBox/Grayscale Printing: *0 1
CNIJRGB2GrayConvert/RGB2GrayConvert: *0 1

アスタリスク (*) がついているのが現在の設定なので、今は 0 になっていることが分かる。

試しに、これを 1 に変更してみよう。 設定を変更するときは -o オプションで <項目名>=<値> という形で指定する。

$ lpoptions -p Canon_iP2700_series -o CNIJGrayScale=1

これで CNIJGrayScale/Grayscale Printing の項目の値が 1 に変更できた。

$ lpoptions -p Canon_iP2700_series -l | grep CNIJGrayScale
CNIJGrayScale/Grayscale Printing: 0 *1 2
CNIJGrayScaleCheckBox/Grayscale Printing: *0 1

あとは、この状態で印刷すればモノクロで印刷できた。

$ lpr -P Canon_iP2700_series sample.pdf

めでたしめでたし。