webapp-hardware-bridge
webapp-hardware-bridge copied to clipboard
Silent print and serial ports for web!
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
- [x] Direct print from webpage
- [x] Serial read/write from webpage
- [x] Support all modern broswers that implemented WebSocket (Chrome, Firefox, Edge... etc)
- [x] 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
-
Install and setup mapping via Configurator
-
Start "WebApp Hardware Bridge" and start using your WebApp
WebApp Side
- 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
- Configurator/GUI do not run? Install vc_redist.x64.exe
- Build from source
Advanced Usages
- HTTPS/WSS Support
- Authentication
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!