Template Printer
A Node.js library for thermal printers custom format printing.
Description
Arrange and assemble the print data according to the customized print template, then generate a picture of the assembled print content, and finally send the picture to the printer for printing, so as to realize custom printing with a higher degree of freedom.
Usage
const tplPrinter = new TemplatePrinter(
// install imaging drive
new HtmlToImage(),
// install image print drive
new TMPrinter()
);
await tplPrinter.print({
// printer config
host: '192.168.1.111',
cut: true,
beep: true
}, {
// template
id: 1,
name: "TEST",
width: 80,
content: [
{
value: "TEST",
left: 30,
size: 20,
bold: true
},
{
value: "NEWLINE"
},
{
type: TplPrint.TemplateItemType.FORMAT,
key: "order_id",
value: "OrderId: %order_id%",
size: 10,
left: 0
},
{
type: TplPrint.TemplateItemType.FORMAT,
key: "customer_name",
value: "CusName: %customer_name%",
size: 10,
left: 30
},
{
type: TplPrint.TemplateItemType.FORMAT,
key: "customer_phone_number",
value: "CusPhoneNum: %customer_phone_number%",
size: 10,
left: 50
},
{
value: "NEWLINE"
},
{
value: "============================================================="
},
{
value: "NEWLINE"
},
{
type: TplPrint.TemplateItemType.ARRAY,
key: "products",
value: [
{
type: TplPrint.TemplateItemType.FORMAT,
key: "product_name",
value: "%product_name%",
size: 10,
left: 0
},
{
type: TplPrint.TemplateItemType.FORMAT,
key: "product_price",
value: "%product_price%",
size: 10,
left: 30
},
{
type: TplPrint.TemplateItemType.FORMAT,
key: "product_number",
value: "x %product_number%",
size: 10,
left: 60
},
{
value: "NEWLINE"
}
]
}
]
}, {
// print data
order_id: 1001,
customer_name: "harvey7",
customer_phone_number: "12345678",
products: [
{
product_name: "Product A",
product_price: 18.00,
product_number: 1
},
{
product_name: "Product B",
product_price: 138.00,
product_number: 1
},
{
product_name: "Product C",
product_price: "28.00",
product_number: 1
}
]
}, {
// imaging options
lengthScale: 2,
sizeScale: 0.7
});
Expand
expand imager
class MyImager implements TplPrint.ImagingDrive {
imaging(templateWithData: TemplateWithData, opts?: ImagingOpts): Promise<Buffer> {
...
}
}
expand image printer
class MyPrinter implements TplPrint.ImagePrinterDrive {
printImage(cfg: PrinterCfg, image: Buffer): Promise<any> {
...
}
}
use expand drives
new TemplatePrinter(
new MyImager(),
new MyPrinter()
);