簡単 (電子) レシート receiptline の新機能を試してみた

マークダウン言語で紙のレシートや電子レシートを簡単に作れる receiptline。
https://github.com/receiptline/receiptline
https://www.npmjs.com/package/receiptline

少し前にマイナーバージョンアップがあったので、新機能を試してみました。
(2020年11月21日時点で Verion 1.1.1)

# Web フォントで表示

[前回の記事](https://qiita.com/dopperi46/items/5a327d8c7f22ad2fde22)で試していた Google Fonts の「Kosugi Maru」が採用されました。
これで iOS, Android, Windows, Linux, Mac どの環境でも同じ表示になるはずです。
![00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/782ade4e-dda6-828f-203e-02d734fc2933.png)

データは[過去の記事](https://qiita.com/dopperi46/items/e871ce96dadea11d243c)から。

```text:ReceiptLine
{image:iVBORw0KGgoAAAANSUhEUgAAASAAAAAwAQMAAACL7DXsAAAABlBMVEUAAAD///+l2Z/dAAABqElEQVQ4y+3VMW7bMBQGYLIqwqUo10ymj5AxBQwouUmO0NEFBFOCBo05Qs7QG5DV0K1noOGhKwMvLEDw7yOVALEUIB46BdUofJTe+x8pMZxxsXeFol4gJucm1HMUopght0SPmCO2RCOGGTJLNBB783UShzladidxfBMluYjpFaT+FYqEKE4O/8VtRA7WrRO8Sl+pEIPWq2Nd0LGPHvc81CJYYGgTfslwdy2wql1UP1RBv+2foFVHaO8AaYAHYW4uq1hLF1dsQj/tY9wpS2j0hAgq4TZVXkVP+jChwfrU1BPSSTkkJfxO2KAHQv1U04P1OhbUMh0z0oQk3e0zmrpD50UoqKdWCSGdopxT4oGfojBDNBZvIztF4ynKA95bsG1B3RMaFugw2qPfqmeUI5AzNODQU06NzMgkqpm6m9BTBGX7jn33PTYUy0qYBqki9PmiIApzW9Aeol1fxcR45MJxmjlDYm1GNBb/saDQCHO3/QZ2GyvuK6BdK/AuI6yU/yT6cjjVPqQK1kKqSIE42vPDwVxWTBvEzY69POb2nG/Bf4T2HMT0u/sj/AWoqMYMK2VNkgAAAABJRU5ErkJggg==}|
^^領収書|
2020/07/20 01:23|
#NGC17TH|

缶ビール | ¥211~
シュークリーム | ¥129*
-
小計 | ¥340~
(10%対象 | ¥211)
( 8%対象 | ¥129)
(内消費税等 | ¥28)
^合計 | ^¥340
お 預 り | ¥1,000
お 釣 り | ¥660

*印は軽減税率対象商品です。
```

# USB (Bluetooth) プリンターで印刷

仮想シリアルポート対応 USB (Bluetooth) プリンターでテスト印刷できるようになりました。

そこで、ネットオークションで新たに SII RP-E10 と CITIZEN CT-S255 を入手。
どちらも USB 接続モデルで、店舗で予備機として保管されていたものだそうです。
![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/5afcb34f-12fc-9a98-ac0e-6784a7b77322.jpeg)

## 仮想シリアルポートの設定

RP-E10 用「SII RP Series Communication Software for Windows」をインストール。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/1282fbf9-b0d1-1005-26c0-12685e64a6d8.png)

「RP通信設定ユーティリティ」で仮想シリアルポートドライバーに切り替え。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/e62c87fa-0e82-5c8a-4d00-a1b3719aee81.png)

CT-S255 用「シチズンサーマルプリンタ仮想 COM ポートドライバー」をインストール。
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/d8d5c136-86db-445d-e1cd-25d6cd826dd0.png)

デバイスマネージャーで確認。RP-E10 は「COM3」、CT-S255 は「COM7」になりました。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/e854cc1a-0230-a8ae-a25f-98eb6a84ade9.png)

## Serial-LAN Converter の設定

`servers.json` で、 `COM3` (または `COM7`) と TCP `9100` ポートをつなぎます。

```json:servers.json
"serial": {
    "host": "127.0.0.1",
    "port": 9100,
    "device": "COM3"
}
```

## ReceiptLine Designer の設定

`printers.json` に、RP-E10 と CT-S255 を登録。`localhost` がプリンターになります。

```json:printers.json
{
    "rp_e10": {
        "host": "127.0.0.1",
        "port": 9100,
        "cpl": 48,
        "encoding": "cp932",
        "gamma": 1.8,
        "upsideDown": false,
        "spacing": false,
        "cutting": true,
        "command": "sii"
    },
    "ct_s255": {
        "host": "127.0.0.1",
        "port": 9100,
        "cpl": 48,
        "encoding": "cp932",
        "gamma": 1.8,
        "upsideDown": true,
        "spacing": false,
        "cutting": true,
        "command": "escpos"
    }
}
```

## テスト印刷

Node.js でサーバーを起動。ReceiptLine Designer で印刷できました。
この開発ツールの使い方は[こちら](https://qiita.com/dopperi46/items/aa866955d24cd9d723b3)。

```bash
$ node designer.js
```

![06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/2cac4c2d-39f4-e3a2-35d9-360c4b31daf1.jpeg)

# 新しい印刷オプション

`printers.json` で行間隔と用紙カットの有無が選択できるようになりました。

## 行間隔

`spacing` を `true` にすると、行間が空いて読みやすくなります。
ただし、罫線もしくは縦倍角以上の拡大文字がある行の間隔は変わりません。
![07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/f5a235d5-d1bd-97ec-39f7-ebf906927618.jpeg)
ちなみに、[前々回の記事](https://qiita.com/dopperi46/items/8d3284c74869e66dca44)は、上下反転印刷に対応できない中途半端な改造でした…

## 用紙カット

`cutting` を `false` にすると、印刷完了後に自動カットされなくなります。
![08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/f1f1ed0f-d0ea-690d-0cec-d09a609f34cb.jpeg)

また何か作ったら投稿します。ではまた！