Direct Printing for Perfex CRM
Invoices, receipts and product labels straight from Perfex to a thermal printer, with no PDF download in between.
$29 one payment, priced for what is not yet proved
This module has not been tested against a physical printer. I do not own one. Everything else on this page is verified, and this is the part that is not, which is why it costs $29 rather than $79.
Buy it, try it, and if something does not print, tell me what printer you have and what came out. I will fix it or refund you, your choice.
Demo: crmdemo.lumadro.com/admin · demo@lumadro.com / demo · read-only, so the demo cannot configure a printer
What is verified, and how
- Labels are rendered and checked. The ZPL goes through a real ZPL renderer and comes back as an image. Accents print, a caret in a product name prints as a caret instead of breaking the format, the barcode carries the right payload, and a small label drops the company name rather than the barcode.
- Receipts are decoded and checked. The ESC/POS byte stream is decoded back into the page it describes, at 80mm and 58mm. Totals sit hard right, long product names wrap while totals never do, and the cut command is present.
- 112 assertions cover the commands, the transports and the layouts. Four exist because rendering the output found bugs the tests had missed.
Every image below is real: the interface running on the demo you can open, and the actual output the module produces, rendered from the bytes it sends.
What is not verified
- that your printer accepts the stream and prints it
- that the paper cut fires on your model
- that a scanner reads the printed bars
- that PrintNode relays it to a real device
The first buyer who sends me a printer model and a photograph of the output is doing me a favour, and I will treat it that way.
What you get
- Direct network socket printing, which costs nothing and needs no third party, for any install whose server can reach the printer.
- PrintNode as a fallback for hosted installs whose server cannot.
- ZPL product labels with barcodes, at 100 by 50 and smaller.
- Per-printer layouts, including a kitchen ticket in large type with no prices.
- Automatic printing when an invoice or payment is created.
- An offline queue with retry, so a printer that is switched off does not lose the job, and never blocks the invoice from saving.
- Job history with the failure reason, and a nightly prune.
Security, since this module connects outward
The socket transport refuses loopback, link-local and unroutable addresses, and allows only printer ports. API keys are encrypted at rest. Layout definitions run through a whitelist, so an unknown block is dropped rather than executed. A printing module that lets someone point your server at an internal service is a worse problem than a crooked receipt.
Requirements
Perfex CRM 3.2 or newer, PHP 8.1 or newer. For the free path, an ESC/POS thermal printer with an Ethernet or wifi port. USB and Bluetooth printers need PrintNode, because a server cannot reach them directly.
Custom work
If you need a different receipt layout, another transport, or support for the printer already on your counter, say so and I will quote it. That work is what I would rather be paid for than a licence fee.
Full refund, no argument, if it does not print on your hardware.