添付ファイル
escpos.php (8.1 KB)sample.txt (793 bytes)

サーマルプリンタでは ESC/POS という、コマンドをプリンタに送信することで文字の大きさなどを指定している。

PC に接続されたプリンタで印刷する場合は一度ラスター化しこのコマンドに合わせ擬似的にコマンドを生成し送信している。lpr コマンドを使用すると生のコマンドのままで送信が可能になり、プリンタ内部に保持しているフォントで印面が生成される。

コマンドを理解して、プリントジョブを作成するのは難儀なので簡略化したプログラムの使用方法について説明する。

ESC/POS の細かいコマンドを知りたい場合は、CommandReference024J_L.pdf を参照のこと。

準備

ドライバのインストール

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_S601escpos.php$printer に指定します。

$printer = 'CITIZEN_CT_S601';

使用方法

$ php escpos.php ファイル名

指定したファイル名を取り込み、ESC/POS コマンドに変換し、プリンタにジョブを投げつけます。 必要であれば、適当な場所に配置して、シェルスクリプトのエイリアスを作成したりしてください。

コマンド

コマンドを配置すると以降の文字列に対して有効になります。コマンドを ESC/POS の ASCII 文字に置換しているので、表記の通りの小文字でないと認識しません。

文字の装飾と配置

コマンド 説明
<reset> 現在の状態をリセットしコマンドを影響を解除します。
<cut> カッターを作動させます。
<left> 左揃え
<center> 中央揃え
<right> 右揃え
<rev> 白抜きの反転文字にします。2倍高の文字でない場合は行間が抜けます。
<norev> 反転を解除します
<big> 文字の大きさを2倍にします。2倍の2倍などはできません
<tall> 文字の大きさを縦に2倍します。<wide>の後に配置しても縦長のみになります。
<wide> 文字の大きさを横に2倍します。<tall>の後に配置しても横長のみになります。
<notbig> 文字の大きさを通常に戻します
<fontA> 英数字を通常のフォントにします
<fontB> 英数字を小さめのフォントにします
<fontC> 英数字を極小のフォントにします
<line> 水平線のみを配置します。「─」を24個挿入するので、反転や文字サイズの影響を受けます。
<2bline> 太めの水平線のみを配置します。「━」を24個挿入するので、反転や文字サイズの影響を受けます。
<underline> 下線
<underline2> 太めの下線
<nounderline> 下線を解除します

バーコード

コマンド 説明
<qr>content</qr> QRコードを生成します。配置に文字揃えの影響を受けます。日本語などのマルチバイト文字列も埋め込めます。
<barcode>content</barcode> バーコード(Code 128)を生成します。配置に文字揃えの影響を受けます。
<codebar>content</codebar> バーコード(Codabar)を生成します。配置に文字揃えの影響を受けます。
<pdf417>content</pdf417> 搭乗券などでよく利用される2次元コード(PDF417)を生成します。全幅で作成されます。

疑似的な文字揃え

これらのコマンドは文字サイズに影響を受けます。標準のフォント<fontA>でのみ使用可能です。また横の大きさ(<notbig><wide>)を満たしていれば良いので、それぞれを(<tall><big>)にしてもレイアウトは崩れません。

コマンド 用法 説明
<hfill> 左の文字列<hfill>右の文字列 通常サイズの文字を左右に揃えます。文字サイズが通常出ない場合や合計が半角48文字を超えるとレイアウトが崩れます。
<hfill2> 左の文字列右の文字列 右の文字列のみが2倍幅の場合に左右に揃えます。
<hfill3> 左の文字列右の文字列 両方の文字列が2倍幅の場合に左右に揃えます。

sample.txt をダウンロードして、以下のようにターミナルで実行してください。

$ php escpos.php sample.txt

印刷されたものは下図である。

例の印刷結果
例文の印刷結果(スキャンしたもの)

サーマルプリンタの活用(補遺編)につづく。
または、サーマルプリンタの活用(平文の出力編)へどうぞ。