JS Print Manager

Print Commands & Files, Manage Printers & Scan Docs from Javascript

Key Features

  Send Raw Bytes, Text & Files to any Client Printer
  Print ESC/P, PCL, PostScript, ZPL, EPL, PDF, XLS, DOC
  Thermal, impact, dot-matrix, RFID, kiosk, POS, receipt
  WebScan support for TWAIN-compatible devices
  Cross-browser & Plugin-free (Pure JavaScript)
  Clients: Windows, Linux, Android, RPi & Mac!

  Download JSPrintManager   Buy

Advanced Client-side Printing & Scanning Solution for Javascript

Features at a Glance

 Raw Data Printing

Client Support:    

 Advanced PDF Printing

Client Support:    
Client Support:    

 Advanced DOC Printing

Client Support:     (Requires MS Word 97+)

 Advanced XLS Printing

Client Support:     (Requires MS Excel 97+)
Client Support:    

Print Password Protected PDF, DOC & XLS files! The password protected file is set at server side and the password to unlock it is encrypted and embedded into the file as part of its metadata.

 Advanced TIFF Printing

Client Support:    

 Advanced TXT Printing

Client Support:    
Client Support:    

 Scan Docs & Images

Client Support:    

 Get Scanners Info

Client Support:    

 Get Printers Info & Status

Client Support:    

 Take Video Snapshots

Client Support:    

 Get Video Devices

Client Support:    

 Get Bluetooth Devices

Client Support:    

 BIDI Serial Comm

Client Support:    

 BIDI TCP/IP Comm

Client Support:    

 BIDI Bluetooth Comm

Client Support:    

 IPP Comm

Client Support:    

 BIDI USB / HID Comm

Client Support:    

 Printer Connectivity

Client Support:    

Client Printers Connectivity support: installed printers through Printer Driver (for USB connection), Shared Printers, Parallel Port (LPT), Bluetooth (RFCOMM) or Serial Port RS-232 (COM) as well as IP/Ethernet Network printers. On Linux & Mac OS, any kind of printer installed through CUPS is supported.

 Trays & Bins Support

Client Support:    

If the printer is installed in the client system through a Printer Driver, then you can specify to which Tray Name to send the print job. You can also get the list of trays & bins.

 Paper Names & Sizes

Client Support:    

If the printer is installed in the client system through a Printer Driver, then you can specify the Paper Size if desired. You can also get the list of supported papers and their physical sizes.

 Media Types

Client Support:    

If the installed printer supports Media Types, then you can get the list of supported media types and specify it when printing.

Client Support:    
Client Support:    

Print to any brand and type of client printers! Thermal Label Barcode printers, POS receipt printers, Impact printers, Ticket printers, RFID printers, Dot-Matrix, 3D Printers and more!

 Cross Platform Client

Any Client platform can print from your Website. JSPrintManager App supports Windows, macOS / OS X, Linux, Android & Raspberry Pi (Linux ARM) devices. It's a very small client App without external dependencies!  No ActiveX,  No Flash,  No Silverlight,  No Java,  No .NET Framework

 Device ID

Client Support:    

Each device that connects to your website through JSPrintManager is assigned an unique Device ID based on the OS native machine UUID/GUID. You can get this ID through javascript code.

 Client App Info

Client Support:    

Get the JSPrintManager App info that connects to your website. You can get the client app Version number, the OS name and arch type through javascript code.

 Multi-Users Scenario / RDS

JSPrintManager app supports environments where multiple user sessions are active on the same machine or under remote-desktop scenarios such as RDP or Terminal Services, Citrix, VMware, etc.



JSPrintManager Components

The Website/Javascript component

JSPrintManager is a Javascript object which is used in your website to generate "Client Print Jobs". A Client Print Job allows you to specify which client printer to use (Default, one specific Printer Name, show system Printer dialog box or some LPT, Bluetooth, TCP/IP or RS232 COM port) as well as the commands or files you want to print or send to the specified client printer.

 Download JSPrintManager.js Code

The Client-side component

 Download JSPrintManager Client App

 White Label / Custom Branding Support!

If you are integrating JSPrintManager into your own web application or solution, you may wish to apply your own branding in order to deliver a consistent experience to your customers. White Label (Custom Branding) Licensing for the JSPrintManager Client App is available!

  Android app is not currently available for custom branding!

How does it work?

After providing us your Company & Application Info as well as the required Artworks (for your app and installers), you'll get access to the ready-to-use custom installers for all the supported clients - Windows, macOS & Linux. You'll also get the binaries and scripts in case you wanted to digitally sign and notarize your custom branded app and/or use any other installer tool or technology!

 Your White Label App under Windows


The About Dialog JSPrintManager White Label About Dialog in Windows
The Binaries - Your Brand Folder & Icons JSPrintManager White Label Windows Binaries.png
The Windows Installer Welcome Page JSPrintManager White Label Installer.png
The Windows Installer Progress Page JSPrintManager White Label Installer Progress.png

 Your White Label App under macOS


The About Dialog JSPrintManager White Label About Dialog in macOS
The App - Your Brand Icon JSPrintManager White Label macOS App.png
The macOS Installer Welcome Page JSPrintManager White Label macOS Installer.png
The macOS Installer Summary Page JSPrintManager White Label macOS Installer Summary.png

 Your White Label App under Linux


The About Dialog JSPrintManager White Label About Dialog in Linux

 White Label App for Android is not available




 Print RAW data and commands to a full range of Client Printers from your Website



What's Raw Printing?

Raw Printing (a.k.a. "Raw Data Printing", "DOS-Mode Printing", "Line-Mode Printing") is the process of sending a stream of bytes (sometimes simple ASCII characters) directly to the target printer hardware. Those bytes are expressed by following the syntax and rules of the Command Language (a.k.a. Programming Language) supported by the target printer. Some Raw Printing Languages are composed of human-readable ASCII characters (like Zebra ZPL, EPL, etc) while others combine them with non-printable characters like is the case of the famous ESC/P, Postscript and PCL languages. Our JSPrintManager allows you to send those commands to your clients' printers from your website through an elegant and simple plugin-free approach.

 Windows   Linux / Raspberry Pi   macOS / OSX

Any Client Printer Brand or Type

JSPrintManager does support any kind of printers! That means you can print and send raw commands from your Website to any brand of Thermal Label Barcode printers, POS receipt printers, Impact printers, Ticket printers, RFID printers, Dot-Matrix printers, Kiosk printers, Cash Drawers/Registers, Slip printers, Multifunction printers, ID Card printers, Wristband printers, Passbook or Bankbook printers, Kitchen printers, Laser printers and Inkjet printers installed or available at the client machine.

Printer Connectivity Support

JSPrintManager does support local installed printers with the correct driver or the "Generic / Text Only" driver built-in Windows (for USB connection), Shared Networks printers with a UNC name, printers directly connected to Parallel Port (e.g. LPT1) Centronics, Bluetooth (RFCOMM) or Serial Port RS-232 (e.g. COM1) as well as IP/Ethernet Network printers (e.g. DNS printer name + Port 9001). On Linux, Raspberry Pi & Mac OS, JSPrintManager leverages built-in CUPS system so any kind of printer installed through CUPS is supported.

You can use JSPrintManager in your Website for sending and printing any printer programming languages like Epson ESC/P, HP PCL, PostScript, Zebra ZPL and Eltron EPL, Zebra XML-enabled format, Intermec IPL, Datamax-O'Neil DPL, Godex EZPL, Printronix ZGL, SATO SBPL, Avery-Dennison (Monarch) RCL, Wasp WPL, Citizen CLP, IBM Proprinter, Cognitive-TPG CPL, Dymo ESC codes, Samsung-Bixolon ESC/POS codes and SPL, TOSHIBA-TEC TCPL, TSC TSPL-EZ, DASCOM, etc. In fact, any other printer languages that can be expressed as an array of bytes are supported! Of course, you can also print ZPL or EPL shipping labels generated by postal services like UPS, FedEx, USPS, DHL, etc. In addition to native printer commands, you can also print PRN files!



Client App - Operating System Support Features Matrix

  • Supported
  • Partial or limited
  • Not supported

Query operations

Message (type) Windows Linux macOS Android Notes
session_certificate, get_user, sites_manager, get_app_instances, fonts_list Supported Supported Supported Not supported
mac_address Supported Supported Supported Supported
get_device_id Supported Supported Supported Supported
serial_ports_list Supported Partial Partial Not supported On Unix it returns every /dev/tty* entry without filtering
bt_devices_list Supported Supported Supported Supported
scanner_list, scanners_complete_list Supported Supported Supported Not supported TWAIN, SANE, ImageCaptureCore
video_input_list Supported Not supported Not supported Not supported Returns an empty array outside Windows
usb_devices_list, hid_devices_list Supported Not supported Not supported Not supported Returns an empty array outside Windows
get_default_paper_name, get_default_tray_name, get_paper_info, get_papers, get_trays, get_media_types Supported Supported Supported Not supported
printer_delete_jobs Supported Supported Supported Not supported Windows: spooler purge. Unix: cancel -a.
ipp_message Supported Supported Supported Supported
printers_list, refresh_printers Supported Supported Supported Not supported
printers_complete_list Supported Partial Partial Not supported On Unix the extended level falls back to basic. Printer icons are available on Windows and macOS, not on Linux. The BIDIEnabled property reflects the real printer setting only on Windows; on Linux and macOS it is always false.
on_printer_creation, on_printer_deletion, on_printer_modification Supported Not supported Not supported Not supported Unix returns "Not implemented"

Bidirectional communication (BIDI Comm)

A BIDI Comm session keeps an open channel between the web page and a device, so the page can both send data and receive responses.

Channel (type) Windows Linux macOS Android Notes
Serial Comm (serial) Supported Supported Supported Not supported Any serial port name the OS exposes (COMx, /dev/tty*)
TCP Comm (tcp) Supported Supported Supported Supported Target host must be in the allow list
Bluetooth Comm (bt) Supported Supported Supported Supported RFCOMM sockets on Windows and Linux, IOBluetooth on macOS
IPP Comm (ipp_message) Supported Supported Supported Supported Request/response over HTTP; device URI must be in the allow list
USB Comm (usb) Supported Not supported Not supported Not supported Windows only; outside Windows the request gets no response
HID Comm (hid) Supported Not supported Not supported Not supported Windows only; outside Windows the request gets no response

Scanning (scan_job)

Capability Windows Linux macOS Android Notes
Scan from a scanner device Supported Supported Supported Not supported TWAIN, SANE, ImageCaptureCore
Output as JPG, PNG, TIFF or PDF Supported Supported Supported Not supported
Barcode detection Supported Not supported Not supported Not supported QR, Code39/128, PDF417, EAN/UPC & I25
Scan from a camera (UseVideoDevice) Supported Not supported Not supported Not supported Linux and macOS raise "Video Scan is not supported under this OS"

Printing (binary cpj / cpjg messages)

Capability Windows Linux macOS Android Notes
Print job and job group, with status tracking Supported Supported Supported Not supported
Advanced PDF printing Supported Partial Supported Not supported Not available on Linux ARM
Advanced DOC / XLS printing Supported Not supported Not supported Not supported Requires Microsoft Office.
Generic documents (docx, odt, ppt, etc.) Supported Partial Partial Not supported Windows: ShellExecute printto. Unix: requires LibreOffice.
TXT, TIF, images and RAW Supported Supported Supported Partial

Printer types (print job type)

Printer type Windows Linux macOS Android Notes
0 Default printer Supported Supported Supported Not supported Prints to the OS default printer.
1 Installed printer Supported Supported Supported Not supported Any printer installed in the OS, by name. See the options table below.
2 Parallel port printer Supported Not supported Not supported Not supported Windows writes directly to the LPT port. On Linux and macOS, install the printer in CUPS and use it as an installed printer.
3 Serial port printer Supported Supported Supported Not supported Requires port, baud rate, data bits, flow control, parity and stop bits.
4 Network printer (IP/DNS and port) Supported Supported Supported Supported Direct TCP socket connection
5 User-selected printer (print dialog) Supported Supported Supported Not supported Shows the OS print dialog; cancelling it fails the job
6 Bluetooth printer Supported Supported Supported Supported Requires device address and RFCOMM channel
Parallel, serial, network and Bluetooth printers receive the file content as-is, with no rendering. Use them for raw printer commands (for example ZPL, EPL or ESC/POS). PDF, document and image rendering only applies to default, installed and user-selected printers.

Installed printer options

Option Windows Linux macOS Android Notes
name, use_default Supported Supported Supported Not supported With use_default, falls back to the default printer if the name is not found
paper, paper_index Supported Supported Supported Not supported
Custom paper size in paper Supported Supported Supported Not supported Only if the printer supports custom paper
tray, tray_index Supported Supported Supported Not supported
duplex Supported Supported Supported Not supported
media_type Supported Supported Supported Not supported Ignored if the printer rejects the value
page_trays (tray per page) Supported Not supported Not supported Not supported PDF files only
auto_tray_by_page_size Supported Not supported Not supported Not supported PDF files only. Ignored when page_trays is set.
auto_detect_raw_mode_data_type, driver_model Supported Not supported Not supported Not supported Uses XPS_PASS for v4 drivers, RAW otherwise