CUPS on Linux and macOS

CUPS speaks to network printers through a socket:// URI, which is exactly what a virtual printer listens for.

Adding the queue

lpadmin -p virtual-receipt \
        -v socket://virtual-printer.online:9411 \
        -E \
        -m raw

Substitute your own port. -m raw is the important part: it creates a queue with no driver, so the bytes you send arrive unchanged. -E enables the queue immediately.

Print to it the way you print to anything else:

lp -d virtual-receipt receipt.bin

For a driver-based queue - when what you want to test is the driver's output rather than your own bytes - replace -m raw with the PPD your vendor supplies.

macOS

The same commands work; CUPS is the printing system there too. The graphical Add Printer dialog can also do it: hold Option to reveal Advanced, choose type AppSocket/HP JetDirect, and enter socket://virtual-printer.online:9411.

Checking the queue

lpstat -p virtual-receipt   # queue state
lpstat -o                   # jobs waiting

A job that sits in the queue rather than completing usually means the connection is being reset - check Workspace Settings -> Access Log, because the IP whitelist is the most likely reason.

Next pagePrinting Libraries →