All Projects → imTigger → webapp-hardware-bridge

imTigger / webapp-hardware-bridge

Licence: MIT license
Silent print and serial ports for web!

Programming Languages

java
68154 projects - #9 most used programming language
NSIS
403 projects

WebApp Hardware Bridge

Security Warning

Version <= 0.13.0 are known to be affected by log44 vulnerabilities (CVE-2021-44228, CVE-2021-45105, CVE-2021-45046).

Existing users are strongly recommended to update to 0.14.0 or above as soon as possible.

Introduction

WebApp Hardware Bridge (succeeder of "Chrome Hardware Bridge / Chrome Direct Print")

Make it possible for WebApp to perform silent print and access to serial ports.

Common use cases:

  • Web-based POS - PDF and ESC/POS receipt silent print
  • Web-based WMS - Serial weight scale real-time reading, delivery Note/packing List silent print
  • WebApp that need to read/write to serial ports

Features

  • Direct print from webpage
  • Serial read/write from webpage
  • Support all modern broswers that implemented WebSocket (Chrome, Firefox, Edge... etc)
  • JS SDK/Example included

Web Direct Print

  • 0-click silent printing in web browsers
  • Download via URL / Base64 encoded file / Base64 encoded binary raw command
  • Support multiple printers, mapped by key
  • Support PDF/PNG/JPG Printing
  • Support RAW/ESC-POS Printing

Web Serial Access

  • Bidirectional communication
  • Support multiple ports, mapped by key
  • Support multiple connection share same serial port
  • Serial weigh scale (AWH-SA30 supported out-of-box in JS SDK)

How to use?

Client Side

  1. Install and setup mapping via Configurator

  2. Start "WebApp Hardware Bridge" and start using your WebApp

WebApp Side

  1. Check JS SDK/Example

How it works?

WebApp Hardware Bridge is a Java based application, which have more direct access to hardwares.

It expose a WebSocket server on localhost which accept print jobs and serial connection.

For print jobs, PDF/Images job are downloaded/decoded and then sent to mapped printer.

Raw job are sent to mapped printer directly.

For serial port, serial port are opened by Java and "proxified" as WebSocket stream,

which allow bidirectional communcations.

Configurator is provided to setup mappings between keys and printers/serials.

Therefore web apps do not need to care about the actual printer names.

Known Issue

  • Browser refuse to connect to non-Secure WebSocket server Firefox Workaround: Change "network.websocket.allowInsecureFromHTTPS" to true in about:config

FAQs

Advanced Usages

TODOs

  • Deprecate "Configurator" in favor of Web UI
  • Revamp settings format with proper json processor
  • Per type printer setting
  • Serial settings (Baudrate, data bits, stop bit, parity bit)

Any other ideas? Fork and PR are welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].