npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

rpml

v0.1.1

Published

Utilities for Receipt Printer Markup Language (RPML)

Downloads

129

Readme

Receipt Printer Markup Language (RPML)

Language Overview

Receipt Printer Markup Language (RPML) is a lightweight markup language designed for formatting and generating receipt print documents, eg receipts. RPML provides a set of tags and attributes to control text alignment, styling, and the inclusion of elements like images, barcodes, and tables.

See the language reference for details.

Usage

This JavaScript package allows you to do the following.

Note: This package is in alpha and minor updates may include breaking changes.

Installation

npm install rpml

Parse RPML into commands

import { parse } from 'rpml'

const commands = parse('Some RPML markup')

This returns an array of command objects which contain the parsed information. You will likely pass these commands on to the HTML renderer or printer encoder.

Render HTML preview

Use renderHtml to convert the commands into an HTML document for previewing.

This is a full HTML document that is best shown using an iframe.

import { parse, renderHtml } from 'rpml'

const commands = parse('Some RPML markup')
const html = renderHtml({commands})

Or parse and render in one call.

import { parseAndRenderHtml } from 'rpml'

const html = parseAndRenderHtml('Some RPML markup')

These functions accept the following parameters.

  • chars: the width of the receipt. Defaults to 32.
  • fontFamily: defaults to 'monospace'.
  • fontSize: defaults to '14px'.
  • lineHeight: defaults to '1.3em'.
  • createCanvas: the function for creating a canvas. Defaults to using in-browser document.createElement. You will need to override this if you are calling this through Node.js.

Encode with Receipt Printer Encoder

The encodeReceipt function will apply the parsed commands to Receipt Printer Encoder. It is an asynchornous function to handle loading images.

import ReceiptPrinterEncoder from '@point-of-sale/receipt-printer-encoder'
import { parse, encodeReceipt } from 'rpml'

// Instantiate the encoder
let encoder = new ReceiptPrinterEncoder({
  language: 'esc-pos',
  columns: 42,
  imageMode: 'raster',
})

// Apply RPML commands to the encoder
const commands = parse('Some RPML markup')
encoder = await encodeReceipt({
  commands
  encoder,
  dots: 512,
})

// Print
await currentDevice.transferOut(1, encoder.encode());

Alternatively you can use parseAndEncodeReceipt to do it in one call.

These functions accept the following parameters.

  • encoder: the Receipt Printer Encoder to apply the commands to. It should have language and columns set.
  • dots: The number of dots wide for the printer.
  • createImage: The function used to create an image tag to load the images. Defaults to () => new Image(). You may need to override this if you are calling through Node.js.

Contributing

RPML is in early development. Issues and pull requests are welcome.

To set up your environment, check out this repo and run the following commands.

npm install
npm run test

Also see codemirror-lang-rpml.