Articles on: OneHash CRM | Printing

Everything you should know about Raw Printing

Raw Printing

Sending a string of commands to a printer directly in its native language is called Raw Printing.

Many thermal printers need these raw commands sent to them in order to perform functions like barcode printing, receipt printing, label printing, etc. Raw Printing bypasses the printer's drivers in most cases, making them very fast and reliable. Raw Printing is also capable of doing some advanced features such as cutting receipt paper, kicking out cash drawers, etc.

Setting up Raw Printing in OneHash * Installing QZ Tray application on the client computer

Download and install the QZ Tray application on the computer to which your thermal printer is connected. This application can be found at its official site. Currently, Windows, macOS, and Linux are supported by QZ Tray. During the installation you will be prompted to install Java if not already installed, please install Java to complete the installation.

Further instructions on installing the QZ Tray Application click here.

Create Raw Commands Print Format

To be able to send raw commands to a printer you need to first create a print format in raw commands. Jinja Templating Language is used in raw commands just like in the HTML custom print format.

To create a new print format for Raw Printing:

Go to print format list: Home > Settings > Printing > Print Format
Click on New.
Select the relevant DocType.
Check the Custom format and Raw Printing options.
Fill in the Raw Commands field with the required raw commands to be sent to the printer.
Click Save.

Currently, any string-based printer languages can be used in the Raw Commands field in the print format. Writing raw commands requires knowledge of the printer's native language provided by the printer manufacturer. Please refer to the developer manual provided by the printer manufacturer on how to write their native commands.

Enable Raw Printing in the Print Setting

To enable Raw Printing:

Go to: Home > Settings > Printing > Print Settings > Raw Printing.
Check the Enable Raw Printing option.

Methods to utilize raw printing in OneHash There are two ways to send Raw Printing commands to your printer.

1. Clicking print on the print view page

To print a raw command print format from the Document print view:

a. Select appropriate print format. For print format in Raw Commands, "No Preview available" message is shown in place of the print preview.

b. Click on the print button.

c. Please allow the connection prompt from the QZ Tray for the actions that you initiated (Keyboard Shortcut: Alt + A).

d. You may be asked to select the "print format - printer mapping".

This mapping is used to send the print commands to the appropriate printer.
The printer needs to be installed on your computer to be able to map it to a print format.

This mapping is stored locally on the same computer and will have to be set on each client machine.
You can also edit this by clicking on the Printer Settings button.

2. Calling Raw Print functions from a custom script

It is often a requirement that a print command has to be issued on a certain event (like submit, save, amend, etc.). It is possible to write a custom script to do this for you.

Following are the relevant Raw Print functions:

function: frappe.ui.form.qz_connect
A connection wrapper to establish a connection with the QZ Tray application.
Returns a promise which resolves on successful establishment of a connection.
Allows active and inactive connections to resolve regardless. Hence it can be called every time before sending a command.
Usage example:

Here, qz is a global object provided by the qz-tray.js library.

function: frappe.ui.form.qz_get_printer_list

Gives you the list of printers available to the QZ Tray application
Returns a promise which resolves to a list of printers
Usage example:

function: frappe.ui.form.qz_success

Displays a "Print Sent to the printer!" alert to the user. Can be called after the print command is successful.

function: frappe.ui.form.qz_fail

Displays the error message to the user. Should be called on failure of QZ Tray connection.

Updated on: 01/04/2023

Was this article helpful?

Share your feedback


Thank you!