Back to Blog

How We Print on Remote Printers

Written by

Thursday, Apr 17, 2014

When we first started with Komet we were faced with a somewhat complex task: printing on our customers local printers. Normally this is a very simple task when the application is running within your own network or infrastructure, but in our case these networks were local and Komet is a web application running on Amazon.


At first we tried what seemed the simplest approach: We setup a Windows based print server and installed each of our customer printers there configuring them to use IPP (Internet Printing Protocol). This proved to be a nightmare for the following reasons:


  1. In some cases customers needed to open specific ports on their firewall, otherwise we were unable to connect to the printer.
  2. We always ran into driver issues. Label printers are very tough to configure but once they’re up and running they work perfectly for years. Having all the printers in a single server managed by us posed a challenge when troubleshooting.
  3. Again driver issues: we’d install a Zebra printer for a customer and a couple of weeks later we’d install another Zebra printer for a different customer. Suddenly the first printer (which was working) stopped working due to a driver incompatibility. We ran the risk of damaging functioning printers when installing a new printer.
  4. Single point of failure: if this server had an issue, nobody would be able to print.


After many weeks of trial and errors we concluded that this was not the way to go. We want back to the drawing board and decided that the best option consisted in creating a printer component that would be locally installed on each of our customers infrastructure and that would pull the print requests from a message queue. 

Printing Architecture

Now let’s break this down and understand how this works:


  1. A user using Komet is using an application server since that’s where the web app resides.
  2. Once an action triggers a document to be printed (e.g.: confirming an order) the app server creates a print message and sends it to a print queue.
  3. This message is pulled by the local printing component that’s installed at the customer’s side.
  4. The local printing component then connects to the Komet API and requests the PDFs of the documents that need to be printed.
  5. The documents are sent to the printing component and then they’re printed.

This solution gave us the following advantages:

  1. Each customer would have the flexibility to configure their printer: darkness, margins, printing preferences, etc. All of this is done locally so it does not interfere with the printer nor did it require our intervention.
  2. We eliminated the single point of failure problem: the printing components are installed on each customer and we use a highly available queue (AWS SQS – Simple Queue Service) to send the print messages.
  3. We eliminated any driver issues since it’s completely transparent to the application.

In addition to this the printer component gives us a greater flexibility to address complex printing needs. Here are a couple of examples of things that we’ve had to deal with:

  • Having multiple printers in a warehouse where certain carriers print to specific printers.
  • Printing certain number of copies based on certain business rules (e.g.: for local sales we print 2 copies of the invoices at the front desk, the pick ticket and labels in the warehouse).

I normally get the “if Komet is on the web how does it print on our printers?” as well as the “why is it such a big deal? It’s only printing some labels to a printer” so I hope that this brief explanation helps me answer those questions.



Originally published Thursday, Apr 17, 2014

Related Blogs

Integrating Your Way to Success!

Management | Maria Delgado | 3 Min. Read

Guide to Faster Payment Processing

Sales | María Delgado |  4 Min Read

Armellini's Aelis 4 with Komet Sales

Management | Mark Sterling |  3 Min Read

Are You Using Reports For Your Business?

Management | María Delgado |  3 Min Read

Fast and Secure Payment Processes

Sales | Maria Delgado |  3 Min Read

What happens if you missed your sales target by 17%?

E-commerce | Adam Mace |  6 Min Read

Improving the Floral Supply Chain

Management | Maria Delgado |  5 Min Read

The Floral Industry is Getting Ready for the High Season

Management | Maria Delgado |  5 Min Read

Analyzing Your Data for Floral Success

Management | Maria Delgado |  6 Min Read

Another way to have greater control over your finances

Accounting | Maria Delgado |  3 Min Read

Komet’s been busy at work during 2018

Management | Maria Delgado |  5 Min Read

The Before and After of Customer Credits

Management | Maria Delgado | 4 Min Read

BI: The Core of Every Business

Management l Maria Delgado l 5 Min Read

Automation Equation in the Floral Industry

Management | Maria Degaldo | 5 Min Read

Top 3 Signs You Need a Floral Software

Management | Maria Delgado |  5 Min Read

Why Did I Switch to Komet?

Management | Adam Mace | 4 Min Read

Embracing Technology in the Floral Industry

Sales | Maria Delgado |  6 Min Read

Top 3 Pricing Hacks for the Floral Holidays

Sales | Maria Delgado |  6 Min Read

4 Ways K2K Helps You Maximize Your Sales

Komet to Komet l Maria Delgado | 3 Min Read

Getting Ready for Floral Holidays

Inventory | Maria Delgado |  7 Min Read

Leave a comment

Name .
Message .