EPSON製レシートプリンタにてePOS Print XMLを使って印刷する

プリンタ

はじめに

タスクやメモ用紙等の印刷のため、EPSON製レシートプリンタ TM-T88VIの中古を購入しました。通常、プリンタへ印刷データを送るためには、プリンタドライバのインストールが必要ですが、TM-T88VIにはePOS Print XMLというXML形式でHTTP経由で印刷データを渡すことで直接プリンタに印刷することができるサービスが組み込まれています。

ePOS Print XMLとは

EPSONサイトを見て頂く方が早いかと思われます。以下の通りネットワーク上にあるレシートプリンタにXML形式のスクリプトを渡すことで印刷や用紙カット等を行ってくれます。HTTPリクエストですのでcurlや、HTTPリクエストができるAndroidアプリからも印刷を行えます

XML印刷サービス(https://www.epson.jp/products/receiptprinter/develop/xml.htm)

印刷の前提

  • ePOS Print XMLに対応している機種であること(筆者は、TM-T88VIで実施)
  • 有線・無線ネットワークに接続していること(筆者は、有線で実施)
  • IPアドレスが振られていること(固定がおすすめ)
  • ePOS Print XMLサービスが有効化されていること

印刷してみる

環境

  • クライアント:Ubuntu 24.04
  • プリンタ:EPSON TM-T88VI

スクリプト・コマンド

印刷データ (/usr/print/test/test.xml)

s:Envelope xmlnsのヘッダ、フッタを入れる必要がわからず最初はうまくいきませんでした。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<epos-print xmlns="http://www.epson-pos.com/schemas/2011/03/epos-print">
<text lang="ja"/>
<text font="font_a"/>
<text>Hello World</text>
<feed/>
<cut type="feed"/>
</epos-print>
</s:Body>
</s:Envelope>

印刷コマンド

curl -X POST "http://【プリンタのIPアドレス】/cgi-bin/epos/service.cgi?devid=local_printer&type=receipt&timeout=10000"     -H "Content-Type: text/xml; charset=utf-8"     -H "SOAPAction: \"\""     --data-binary @/usr/print/test/test.xml

印刷結果

印刷XMLデータについて

マニュアル

ドライバー・ソフトウェア基本情報(Epson ePOS-Print XML)

エプソン | 404 Not Found

エディタ

上記のソフトウェア一式にHTMLファイルが入っており、ブラウザでXMLの組み立てとテスト印字を行えます

おわりに

レシートプリンタを使ってToDoリストの印刷等を検討中です

もし余力があれば記事を公開します