@point-of-sale/network-receipt-printer
Version:
This is an library that allows you to print to a network receipt printer using Node network sockets.
136 lines (83 loc) • 4.23 kB
Markdown
This is an library that allows you to print to a network receipt printer using Node network sockets.
<br>
[](https://www.npmjs.com/@point-of-sale/network-receipt-printer)

> This library is part of [@point-of-sale](https://point-of-sale.dev), a collection of libraries for interfacing browsers and Node with Point of Sale devices such as receipt printers, barcode scanners and customer facing displays.
<br>
In order to print a receipt on a receipt printer you need to build the receipt and encode it as in the ESC/POS or StarPRNT language. You can use the [`ReceiptPrinterEncoder`](https://github.com/NielsLeenheer/ReceiptPrinterEncoder) library for this. You end up with an array of raw bytes that needs to be send to the printer. One way to do that is using a network connection.
<br>
If you want to use this libary, first install the package using npm:
```
npm install @point-of-sale/network-receipt-printer --save
```
In your project you can then import it, if you use ES6 modules:
```js
import NetworkReceiptPrinter from '@point-of-sale/network-receipt-printer';
let receiptPrinter = new NetworkReceiptPrinter();
```
Or require it, if you are using CommonJS:
```js
let NetworkReceiptPrinter = require('@point-of-sale/network-receipt-printer');
let receiptPrinter = new NetworkReceiptPrinter();
```
<br>
When you create the `NetworkReceiptPrinter` object you can specify a number of options to help with the library with connecting to the device.
When a network printer is connected to the network it will get assigned a IP address. Consult the manual of your printer for a method to get the network settings of your printer. Once you have the IP address of your printer, provide them as properties when you instantiate the `NetworkReceiptPrinter` object:
- `host`: The IP address of the printer.
- `port`: The port number of the printer, by default this is `9100`.
For example, to connect to `192.168.1.133` using the default port:
```js
const receiptPrinter = new NetworkReceiptPrinter({
host: '192.168.1.133'
});
```
<br>
The actually connect to the printer you need to call the `connect()` function. To find out when a receipt printer is connected you can listen for the `connected` event using the `addEventListener()` function.
```js
receiptPrinter.addEventListener('connected', device => {
console.log(`Connected to printer`);
});
```
The callback of the `connected` event is passed an object with the following properties:
- `type`<br>
Type of the connection that is used, in this case it is always `network`.
<br>
Once connected you can use the following command to print receipts.
When you want to print a receipt, you can call the `print()` function with an array, or a typed array with bytes. The data must be properly encoded for the printer.
For example:
```js
/* Encode the receipt */
let encoder = new ReceiptPrinterEncoder({
language: 'esc-pos',
codepageMapping: 'epson'
});
let data = encoder
.initialize()
.text('The quick brown fox jumps over the lazy dog')
.newline()
.qrcode('https://nielsleenheer.com')
.encode();
/* Print the receipt */
receiptPrinter.print(data);
```
When you are done with printing, you can call the `disconnect()` function. This will terminate the connection to the printer. If the connection to the printer is closed, the library will emit a `disconnected` event.
```js
receiptPrinter.addEventListener('disconnected', () => {
console.log(`Disconnected from the printer`);
});
receiptPrinter.disconnect();
```
<br>
-----
<br>
This library has been created by Niels Leenheer under the [MIT license](LICENSE). Feel free to use it in your products. The development of this library is sponsored by Salonhub.
<a href="https://salohub.nl"><img src="https://salonhub.nl/assets/images/salonhub.svg" width=140></a>