π¨οΈ ESC/POS Printer driver for Node.js.
demo.mp4
[π’ RFC] Recently I'm working on a new workflow that prints the receipt. HTML+CSS will customize the content. Theoretically, we can print anything that we want. The workflow is like this:
- π¨ rendering
<div id="label-dom"> Label/Receipt </div>
- πΈ capturing
const screenshort = await capture(document.getElementByID("label-dom"))
- π§Ύ printing
const printer = await printer.image(screenshort, "s8") printer.cut().close()
But my full-time job is very busy. So the progress is slow, And any sponsorship will encourage me to work more actively in the open-source community.
- π TypeScript.
- π¦ pnpm.
- π’ vitest.
- π More stable maintenance.
- π΄ Printing by HTML+CSS(WIP).
- π‘ More ideas.
- ...
import { Printer, Image } from "@node-escpos/core"; // install escpos-usb adapter module manually import USB from "@node-escpos/usb-adapter"; // Select the adapter based on your printer type import { join } from "path"; const device = new USB(); device.open(async function(err){ if(err){ // handle error return } // encoding is optional const options = { encoding: "GB18030" /* default */ } let printer = new Printer(device, options); // Path to png image const filePath = join("/PATH/TO/IMAGE"); const image = await Image.load(filePath); printer .font("a") .align("ct") .style("bu") .size(1, 1) .text("May the gold fill your pocket") .text("ζεεθ΄’") .barcode(112233445566, "EAN13", { width: 50, height: 50 }) .table(["One", "Two", "Three"]) .tableCustom( [ { text: "Left", align: "LEFT", width: 0.33, style: "B" }, { text: "Center", align: "CENTER", width: 0.33 }, { text: "Right", align: "RIGHT", width: 0.33 }, ], { encoding: "cp857", size: [1, 1] }, // Optional ) // inject qrimage to printer printer = await printer.qrimage("https://github.com/node-escpos/driver") // inject image to printer printer = await printer.image( image, "s8" // changing with image ) printer .cut() .close() });
- See
./examples/demo/testfor more examples.