14
.
11
.
2023
14
.
02
.
2020
Backend
Tutorial
Software

WebUSB - Print Image and Text in Thermal Printers

Burak Aybar
Ruby Developer

We use thermal printers daily like on restaurants, shops or kiosks, basically everywhere. Instead of using lots of different applications to print the receipt/ticket, it is nice to have just one application which can allow modifying styling too.

WebUSB allowed us to connect this wide usage device to the webpages in any Chrome/Firefox without requiring any installation! Here you are going to see how we can implement this portable solution that can print the details of your order together with your logo or any images in your application with only knowing javascript! Before going into details, at the end of the day, we will be able to print an image and text like the picture below.

Epson TM-T20II Thermal Printer [1]

WebUSB thermal printed image and text

What is a Thermal Printer?

Technically;

Thermal printing (or direct thermal printing) is a digital printing process which produces a printed image by selectively heating the coated thermochromic paper, or thermal paper as it is commonly known when the paper passes over the thermal print head. The coating turns black in the areas where it is heated, producing an image [2].

Basically;

A thermal printer is a printer that makes use of heat to produce the image on paper [3].

What does it mean WebUSB and Thermal Printers for Businesses?

In recent years, the time of implementation and prototyping possibilities have become crucial to the market, faster you launch to the market more opportunities you can get. To cope with that, web applications are trying to have more powerful APIs such as WebUSB, WebBluetooth and similar APIs to be able to compete with desktop and embedded applications. This kind of APIs enables us to increase the usage of web applications while developing products, and it brings some advantages such as platform independence, portability, and comprehensibility.

One of the examples of usage area of WebUSB is thermal printers. Due to the quality of the print, speed, and technological advances, it has become increasingly popular. These printers are widely used in supermarkets, libraries, restaurants, bars, transport industry, lottery and betting, kiosks, petroleum stations, POS systems and in the medical industry, such as heart monitoring machines, or geological engineering (it records the real-time images of subsurface activities and earthquakes). These are just a few broad examples of the usage of thermal printers. The list will be endless if you think of places that you get a receipt every day.

Let's Code Thermal Printer with WebUSB

As I discussed earlier, in the previous article, one of our projects needed to connect to the USB device through the browser. The traditional methods were not enough to tackle this requirement and brought many problems, such as insecureness and compatibility problems. That's why the WebUSB API has been created: to provide a way for websites to connect to users' USB devices.

For the project, which I have been working on, not only connecting the USB device on the browser was required, but also you had to upload the various logos and give a command to the thermal printer to print this logo. That could be very challenging to maintain this kind of printers.

If you're not sure what ESC/POS commands are, check out my previous article explaining the protocols for printing an image and text on thermal printers.

How about printing a text on Thermal Printer?

Actually, printing a text is easier than printing an image. Here, we have simply split the sentence to the characters, then we have converted to decimal format.

Easy, right?

Once you have constructed your array of decimal representations for your image or text with command codes, you simply need to call the function for transferring the data to the thermal printer:

If you're not sure what a device is, check out my previous article explaining the printing the data on thermal printers via WebUSB.

Summary

In this blog post, I have introduced how to print text and images in thermal printers via WebUSB. In the beginning, we understood what is a thermal printer, and then we saw how this plays an important role for businesses. Finally, we finished with practising by programming with a fully working implementation of printing an image and text in Javascript.

It's already in production and battle-tested with thousands of different visitors, devices, locations every week. Join the journey!

If you're interested in more blog posts like this, please visit our Visuality Blog or our Medium Page

Resources

[1]https://theuniformsolution.com/product/epson-tm-t20ii-thermal-printer/

[2]https://en.wikipedia.org/wiki/Thermal_printing

[3]https://www.techopedia.com/definition/3629/thermal-printer

Burak Aybar
Ruby Developer

Check my Twitter

Check my Linkedin

Did you like it? 

Sign up To VIsuality newsletter

READ ALSO

WebUSB - Bridge between USB devices and web browsers

14
.
11
.
2023
Burak Aybar
Ruby on Rails
Frontend
Backend
Tutorial

Visuality comes to town - this time it's Poznań

14
.
11
.
2023
Michał Piórkowski
Visuality
HR

CSS Modules in Rails

14
.
11
.
2023
Adam Król
Ruby on Rails
Tutorial
Backend
Frontend

How to choose a software house.

14
.
11
.
2023
Michał Piórkowski
Ruby on Rails
Business
Visuality

JSON API versus the NIH syndrome

14
.
11
.
2023
Nadia Miętkiewicz
Backend
Frontend
Tutorial

From Idea to Concept

02
.
10
.
2024
Michał Krochecki
Ruby on Rails
Business
Startups

Styling React Components

14
.
11
.
2023
Umit Naimian
Ruby on Rails
Frontend
Tutorial

How good design can help your business grow

14
.
11
.
2023
Lukasz Jackiewicz
Design
Business
Marketing

TODO not. Do, or do not.

29
.
11
.
2023
Stanisław Zawadzki
Ruby on Rails
Software

CS Lessons #003: Density map in three ways

14
.
11
.
2023
Michał Młoźniak
Ruby
Backend
Tutorial
Software

Clean code for the win

14
.
11
.
2023
Michał Piórkowski
Ruby on Rails
Backend
Frontend
Business

Crowd-operated Christmas Lights

14
.
11
.
2023
Nadia Miętkiewicz
Ruby on Rails
Backend

How to startup and be mature about it

14
.
11
.
2023
Rafał Maliszewski
Ruby on Rails
Startups
Business

A journey of a thousand miles begins with workshops

14
.
11
.
2023
Michał Piórkowski
Software
HR

CS Lessons #002: Data structures

14
.
11
.
2023
Michał Młoźniak
Ruby
Software

Summary of Phoenix workshop at Visuality

14
.
11
.
2023
Karol Słuszniak
Ruby on Rails
Visuality
Backend

CS Lessons #000: Introduction and motivation

14
.
11
.
2023
Michał Młoźniak
Ruby
Software

CS Lessons #001: Working with binary files

14
.
11
.
2023
Michał Młoźniak
Ruby
Software

Working with 40-minute intervals

14
.
11
.
2023
Sakir Temel
Software
HR

THE MATURE TECH STARTUP DILEMMA: WHAT'S NEXT

14
.
11
.
2023
Susanna Romantsova
Startups

Win MVP workshop!

14
.
11
.
2023
Susanna Romantsova
Startups

FINTECH WEEK IN OSLO: WHATs & WHYs

14
.
11
.
2023
Susanna Romantsova
Conferences

MY FIRST MONTH AT VISUALITY

14
.
11
.
2023
Susanna Romantsova
Visuality
HR

NASA 1st global hackaton in Poland? Visuality Created it!

14
.
11
.
2023
Rafał Maliszewski
Ruby on Rails

Berlin StartupCamp 2016 summary

14
.
11
.
2023
Michał Piórkowski
Conferences
Startups