Electron-pos-printer
An electron printer plugin, currently supports 58mm, requires electron >= 4.x.x.
Installation
$ npm install electron-pos-printer
Usage
In main process
const {PosPrinter} = require("electron-pos-printer");
In render process
const {PosPrinter} = require('electron').remote.require("electron-pos-printer");
Demo
const {PosPrinter} = require("electron-pos-printer");
const options = {
preview: false, // Preview in window or print
width: '170px', // width of content body
margin: '0 0 0 0', // margin of content body
copies: 1, // Number of copies to print
printerName: 'XP-80C', // printerName: string, check it at webContent.getPrinters()
timeOutPerLine: 400
}
const data = [
{
type: 'image',
path: path.join(__dirname, 'assets/banner.png'), // file path
position: 'center', // position of image: 'left' | 'center' | 'right'
width: 60, // width of image in px; default: auto
height: 60, // width of image in px; default: 50 or '50px'
},{
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image'
value: 'SAMPLE HEADING',
style: `text-align:center;`,
css: {"font-weight": "700", "font-size": "18px"}
},{
type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image'
value: 'Secondary text',
style: `text-align:left;color: red;`,
css: {"text-decoration": "underline", "font-size": "10px"}
},{
type: 'barCode',
value: 'HB4587896',
height: 12, // height of barcode, applicable only to bar and QR codes
width: 1, // width of barcode, applicable only to bar and QR codes
displayValue: true, // Display value below barcode
fontsize: 8,
},{
type: 'qrCode',
value: 'https://github.com/Hubertformin/electron-pos-printer',
height: 55,
width: 55,
style: 'margin: 10 20px 20 20px'
}
]
PosPrinter.print(data, options)
.then(() => {})
.catch((error) => {
console.error(error);
});
Typescript
Usage
import {PosPrinter, PosPrintData, PosPrintOptions} from "electron-pos-printer";
const options: PosPrintOptions = {
preview: false,
width: '170px',
margin: '0 0 0 0',
copies: 1,
printerName: 'XP-80C',
timeOutPerLine: 400
}
const data: PosPrintData[] = [
{
type: 'image',
path: path.join(__dirname, 'assets/banner.png'),
position: 'center',
width: 60,
height: 60
},{
type: 'text',
value: 'SAMPLE HEADING',
style: `text-align:center;`,
css: {"font-weight": "700", "font-size": "18px"}
},{
type: 'barCode',
value: 'HB4587896',
height: 12,
width: 1,
displayValue: true,
fontsize: 8,
},{
type: 'qrCode',
value: 'https://github.com/Hubertformin/electron-pos-printer',
height: 55,
width: 55,
style: 'text-align:center;width:55px;margin: 10 20px 20 20px'
}
]
PosPrinter.print(data, options)
.then(() => {})
.catch((error) => {
console.error(error);
});
Printing options
Options | |
---|---|
copies | (number) number of copies to print |
preview | (boolean) preview in a window, default is false |
width | (string) width of a page |
margin | (string) margin of a page, css values can be used |
printerName | (string) the printer's name |
timeOutPerLine | (number) timeout per line, default is 200 |
Print data object
type | (string) 'text', 'qrCode', 'barCode', 'image' // type 'text' can contain html |
value | (string) value of the current row |
height | (number) applicable to type barCode and qrCode |
width | (number) applicable to type barCode and qrCode |
style | (string) styles, css rules can be used |
css | (string) css rules ex: {"font-size": "12px"} |
displayValue | (boolean) display value of barcode below barcode |
position | (string) 'left', 'center', 'right' applicable to type qrCode, barCode and image |
Author
- Hubert Formin
- hformin@gmail.com
- Twitter: @hformin
Credits
This package was inspired by electron-thermal-printer