receiptline / receiptio

A print application for receipt printers, simple and easy with markdown, printer status support.
Apache License 2.0
67 stars 10 forks source link
epson escpos impact invoice kiosk kitchen markdown png pos printer receipt star starprnt svg thermal ticket

ReceiptIO

A print application for receipt printers, simple and easy with markdown, printer status support.

$ more receiptmd.receipt
^^^RECEIPT

12/18/2021, 11:22:33 AM
Asparagus | 1| 1.00
Broccoli  | 2| 2.00
Carrot    | 3| 3.00
---
^TOTAL | ^6.00

$ receiptio -d 192.168.192.168 -p escpos -c 42 receiptmd.receipt
success
const receiptio = require('receiptio');

const receiptmd = `^^^RECEIPT

12/18/2021, 11:22:33 AM
Asparagus | 1| 1.00
Broccoli  | 2| 2.00
Carrot    | 3| 3.00
---
^TOTAL | ^6.00`;

receiptio.print(receiptmd, '-d 192.168.192.168 -p escpos -c 42').then(result => {
    console.log(result);
});

receipt

Features

ReceiptIO is a simple print application for receipt printers that prints with easy markdown data for receipts and returns printer status. Even without a printer, it can output images.

A development tool is provided to edit and preview the receipt markdown.
https://receiptline.github.io/designer/

The details of the receipt markdown are explained at
https://github.com/receiptline/receiptline

Receipt Printers

Connect with IP address, serial port, or Linux USB device file.
(LAN, Bluetooth SPP, USB with virtual serial port driver, ...)

Epson TM series (South Asia model) and Star MC series (StarPRNT model) can print with device font of Thai characters.

Installation

$ npm install -g receiptio

For USB connections on Linux, add a user to the lp group and reboot to access the device file.

$ sudo gpasswd -a USER lp

If serial port is used, Node SerialPort is also required.

$ npm install -g serialport

When using -i (print as image) or -p png (convert to png) option, puppeteer or sharp is also required.

$ npm install -g puppeteer
$ npm install -g sharp

sharp is not support web fonts and minimizes the area of "invert" character decoration.

Usage

$ receiptio -h

usage: receiptio [options] [source]
source:
  receipt markdown text file
  https://receiptline.github.io/designer/
  if source is not found, standard input
options:
  -h                show help
  -d <destination>  ip address or serial/usb port of target printer
  -o <outfile>      file to output (if -d option is not found)
                    if -d and -o are not found, standard output
  -p <printer>      printer control language
                    (default: escpos if -d option is found, svg otherwise)
                    (escpos, epson, sii, citizen, fit, impact, impactb, generic,
                     star, starline, emustarline, stargraphic,
                     starimpact, starimpact2, starimpact3, svg, png, text)
                    (png requires puppeteer or sharp)
  -q                check printer status without printing
  -c <chars>        characters per line (24-96) (default: 48)
  -u                upside down
  -v                landscape orientation (for escpos, epson, sii, citizen, star)
  -r <dpi>          print resolution for -v (180, 203) (default: 203)
  -s                paper saving (reduce line spacing)
  -n                no paper cut
  -m [<l>][,<r>]    print margin (left: 0-24, right: 0-24) (default: 0,0)
  -i                print as image (requires puppeteer or sharp)
  -b <threshold>    image thresholding (0-255)
  -g <gamma>        image gamma correction (0.1-10.0) (default: 1.8)
  -t <timeout>      print timeout (0-3600 sec) (default: 300)
  -l <language>     language of source file (default: system locale)
                    (en, fr, de, es, po, it, ru, ja, ko, zh-hans, zh-hant, th, ...)
print results:
  success(0), online(100), coveropen(101), paperempty(102),
  error(103), offline(104), disconnect(105), timeout(106)
examples:
  receiptio -d COM1 receiptmd.receipt
  receiptio -d /dev/usb/lp0 receiptmd.receipt
  receiptio -d /dev/ttyS0 -u -b 160 receiptmd.receipt
  receiptio -d 192.168.192.168 -p escpos -c 42 receiptmd.receipt
  receiptio -d com9 -p impact -q
  receiptio receiptmd.receipt -o receipt.svg
  receiptio receiptmd.receipt -p escpos -i -b 128 -g 1.0 -o receipt.prn
  receiptio < receiptmd.receipt -p png > receipt.png
  echo {c:1234567890} | receiptio | more

Command

receiptio [options] [source]

Parameters

Return value

API

Print (Convert) API

// async/await
const result = await receiptio.print(receiptmd, options);
console.log(result);

// promise
receiptio.print(receiptmd, options).then(result => {
    console.log(result);
});

Method

receiptio.print(receiptmd[, options])

Parameters

Return value

Transform stream API

receiptio.createPrint() method is the stream version of the receiptio.print().

const fs = require('fs');
const receiptio = require('receiptio');

const source = fs.createReadStream('example.receipt');
const transform = receiptio.createPrint('-p svg');
const destination = fs.createWriteStream('example.svg');

source.pipe(transform).pipe(destination);

Method

receiptio.createPrint([options])

Parameters

Return value

Serial port options

-d COM1:115200,N,8,1

License