Using Open Source and Zebra Printers For Printing Your Barcode Thermal Labels

Rolled-labels for direct thermal printing with Zebra Technology’s desktop printers and open source software provide a flexible and inexpensive solution for people having to do order fulfillment on a small scale.

The first time I heard the job title “fulfillment specialist” I thought it sounded pretty weird, and possibly illicit. Even when I found out what it actually meant, it still seemed like an odd specialization—just putting things in boxes and sending them to people. Seems easy, right? How hard can it be?

Lots more people are having to do this kind of work for themselves these days, with makers, entrepreneurs, and small businesses working through crowd funding or online marketplaces, like Kickstarter or Etsy. Sometimes, the right solution is to let someone else handle it for you—but not always, and even if you do, there’s good chance you will still have to fill some orders yourself.

One of Zebra Technologies lower priced roll-label printers.

I have done this with sheet labels and a laser printer before. But unless you have very high volume of orders, you can get stuck trying to wait for enough orders to use up one label sheet, while your first customer is getting impatient with your turn-around time. And in the end, you’ll likely wind up printing pages with a lot of blank labels on them that will wind up in the trash.

The roll-label printer (like the kind Zebra Technologies makes for the desktop) and rolled labels for direct thermal printing which does not require a ribbon, toner or ink (as sold here on LabelsOnTime.com), shine for short-run projects where there’s enough fulfillment work to make efficiency important, but not enough to justify mass production. These desktop printers use direct thermal labels on 1" core rolls and no ribbon. For large scale volume thermal printing of labels, Zebra has an extensive line of industrial printers which use either direct thermal or thermal transfer printing on a 3" core or fanfold stacks.

Roll-labels can be printed one at a time or in large batches, with no waste, and they give you the flexibility to include or change customer-specific or product-specific information. You can keep this specific information separate from creating the product itself and don’t lose anything if these details have to be changed. They’re also great if you are assembling elements from different suppliers (say disks and disk packaging) and need to label the result. It keeps you in control of the final product.

This is about a $300 investment for the low-end printers, like the one in the lead-image for this article (and about $700-$1000 for the cheaper industrial versions that Zebra sells), but it’ll likely pay for itself in a year on Etsy or a single Kickstarter campaign, not only in cash, but also in your sanity. After all, you probably didn’t get into this business because you love labeling and shipping things.

Testing out a label design with the online ZPL emulator.

But what about open source software and avoiding vendor lock-in? I have always set my projects up around the idea of using open source software for every critical function, because I want to avoid being held over the barrel to upgrade or to continue buying from a single vendor. And also because I wanted to avoid arbitrary barriers to my projects’ workflow when I needed to customize something. I know I can get drivers for popular laser printers and print from my Linux apps like Inkscape or LibreOffice. Are these roll printers going to lock me in?

It turns out not, and that’s a big relief: the Zebra Technology printers all use a communications protocol called “ZPL” (or “ZPL2” for the later printers). This is a surprisingly readable and fully-documented printer language, and the printer itself takes care of making barcodes in most cases, so the ZPL you send to it is fairly simple.

Although you might not realize it from the legal pages on the subject, Zebra Technologies has embraced open source support for their printers, and they keep a lot of software available through their Github site. Most of it is licensed under Apache or MIT licenses.

Furthermore, there are quite a few open source libraries for sending data to Zebra Technology printers if you want to set your workflow up with a script or small webapp. I was able to find support in a lot of different languages:

Objective C:

zebra-toolkit

cordova-zebra-printer

C-Sharp/.NET:

zpl-printer

sharpzebra

Image-2-ZPL

Go:

barcoder

Java:

zebra-zpl

zbtprinter

ZebraPrintingAndroid

zebra-print-android

zebra-png-upload

Javascript:

zpl-js

TiZebraPrint

Perl:

Printer-Zebra

PHP:

zebra

Python:

Zebra

django-zebraprinters

zebra

Ruby:

zebra_printer (yatsura)

zebra_printer (Baobab)

It’s a little out of scope for me to go into an example script, but for most projects, you could probably just use a templating language with a simple forms-based web front-end. For example, I’d personally probably choose:

I found a nice collection of ZPL label examples as a practical guide, along with the official ZPL documentation. And you can test your ZPL with this online ZPL emulator that shows you the resulting label right in your browser (I tried it out myself, as you can see in the screen capture above).

Although very flexible, that “roll your own” approach would take some development time, but there are even simpler options. One of the GitHub projects mentioned above is actually a small complete webapp that does print to the label printer with CUPS: you could simply install this and run the webapp on your own computer to drive the printer. All you’d need to adjust is the ZPL template to fit your task.

By Terry Hancock

direct thermal label printer and barcode labels