Skip to content

node-escpos/driver

Folders and files

NameName
Last commit message
Last commit date
Jan 14, 2024
Dec 5, 2022
Jan 14, 2024
Dec 18, 2022
Mar 13, 2024
Oct 22, 2022
Oct 22, 2022
Oct 24, 2022
Oct 24, 2022
Oct 22, 2022
Oct 22, 2022
Jan 18, 2023
Oct 24, 2022
Jan 14, 2024
Dec 18, 2022

Repository files navigation

@node-escpos



πŸ–¨οΈ ESC/POS Printer driver for Node.js.


Hacktober Badge


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:

  1. 🎨 rendering
<div id="label-dom"> Label/Receipt </div>
  1. πŸ“Έ capturing
const screenshort = await capture(document.getElementByID("label-dom"))
  1. 🧾 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.


Improvements

  • πŸ›  TypeScript.
  • πŸ“¦ pnpm.
  • 🟒 vitest.
  • πŸš€ More stable maintenance.
  • πŸ”΄ Printing by HTML+CSS(WIP).
  • πŸ’‘ More ideas.
  • ...

Packages

Example

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()
});

Sponsors

License

MIT License Β© 2022 Dohooo