ERD-Hub: Direct Printing From Web Applications
ERD-Hub: Direct Printing From the Web
Printing from a web application is still surprisingly cumbersome. A browser can open a print dialog, but it cannot simply send a label or report to a specific printer. For regular documents this often means downloading a PDF and printing it manually. For label printers, which may expect languages such as ZPL, TSPL or DYMO's own protocol, even that isn't enough.
ERD-Hub bridges that gap.

ERD-Hub is a small application that runs locally on your computer and allows supported websites to communicate directly with your printers. It sits quietly in the menu bar on macOS or the system tray on Windows and requires no browser extension or plug-in.
From the website, printing becomes as simple as selecting a printer, choosing the number of copies and pressing Print. There is no browser print dialog, no document to download and no second application to open.
From the browser to the printer
ERD-Hub connects the web application to printers available on the user's computer. It supports label printers using ZPL, TSPL and DYMO, standard office printers using PDF, network printers discovered using Bonjour, and serial printers.
The hub itself doesn't render labels. ERDesigns' report engine produces the finished printer data, and ERD-Hub delivers those bytes to the appropriate device. This keeps its responsibility deliberately small.
For normal printers, ERD-Hub can use the operating system's existing print infrastructure. Label printers can be accessed directly over USB where necessary. This is particularly important for printers such as the DYMO LabelWriter, which requires two-way communication with the device rather than simply sending a document to a print queue.
Local by design
A website shouldn't automatically gain unrestricted access to hardware just because ERD-Hub is installed.
The hub therefore only listens on the computer's own loopback interface and isn't accessible from the local network. Websites must be explicitly allowed before they can connect, and ERDesigns customer sites can be added through a one-time customer link.
Communication between the browser and ERD-Hub is authenticated and encrypted. Each installation has its own identity, allowing the website to recognise the same hub on future connections.
ERD-Hub also doesn't send telemetry about users or their print jobs. Document and label contents aren't written to its logs.
Printing directly from ERDesigns
I've already integrated ERD-Hub into erdesigns.be and Report Cloud.
Reports can be generated and sent directly to any supported local office printer. Labels can be rendered for the selected label printer and sent directly to the device.
The result is the workflow I originally wanted: create something on the website, select the physical printer next to me, and print it.
There is no intermediate PDF download and no browser print dialog. The website knows which printers ERD-Hub has made available and can present them directly in its own interface.
This isn't limited to ERDesigns' own pages either. Customer websites can use the same printing functionality once their site has been added to the local ERD-Hub installation.
Current status
ERD-Hub is written in C++20 and uses the same core across platforms.
The macOS version is currently in beta, supporting both Apple silicon and Intel Macs. I've tested it end to end with a DYMO LabelWriter 5XL connected over USB and a Samsung laser printer through the macOS print queue, including labels and multi-page invoices printed directly from erdesigns.be.
The Windows version is already building and compiling, with its beta following once the sandboxed PDF renderer is finished. The Linux version also builds and passes its test suite, with packaging currently in progress.
ERD-Hub is intentionally a small piece of the overall system. It doesn't try to be a report designer, printer driver or desktop printing application. Its job is simply to provide the missing connection between a web application and the printers sitting next to the user.
And from the website, that means printing can finally be just what you'd expect it to be:
Choose a printer. Press Print. Done.