You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Simon Waldherr 421b873982
2 months ago
cmd/ups fix port issue 2 months ago
.gitignore adding .gitignore 7 months ago
.travis.yml update 2 months ago
LICENSE UPS is now MIT licensed 2 months ago update 2 months ago
http.go cleanup import pathes and update 6 months ago
load.go fix port issue 2 months ago
structs.go add network port to the printer config csv file the default port for most Zebra printers is 9100 the default port of the QLn420 printers is 6101 6 months ago
ups.go fix port issue 2 months ago

UPS - Uncommon Printing System

Build Status GoDoc

I wrote the Uncommon Printing System a long time ago to replace a proprietary printing system called NiceWatch by NiceLabel. Don’t get me wrong, Nice Label Designer is still the best WYSIWYG Label Editor on Earth, but NiceWatch is slow and unstable. The UPS is programmed to support Label Templates designed with NiceLabel Designer and print them on ZPL compatible printers.

This repository contains a refactored version of UPS. It only contains general purpose features, features like:

  • handling invalid XML-Files from SAP systems
  • reload missing data in XML-Files from SAP systems
  • save log-data to BI (business intelligence) system
  • transfer material master data to a sub-system
  • load printer data from a SAP database table

I use UPS in a customized version to print up to 10000 labels daily. UPS can also do a lot more with ease, but in the current case of application it is not needed. You can even run UPS on a Raspberry Pi.

Currently I only print on Zebra ZM400, Zebra ZT410, Zebra QL 420 (plus) and Zebra QLn 420, but I plan to extend the UPS to support non ZPL printers as well.

Test it

to test the application you can simply follow these steps:

  1. go get
  2. ups &
  3. nc -l 9100 > zpl &
  4. cat xmlreq.xml | nc localhost 30000
  5. kill -9 $(pidof ups)


Why what? Why I wrote the application? Because I did not want to bother anymore with an unstable proprietary software! I wasted several hours a week managing the NiceWatch system and keeping it running. I had much better things to do and that’s why I wrote UPS.

Why I made some choices the way I made them? Mostly there is also a reasonable cause - you want an example? There is a function called cdatafy which adds CDATA-sections to the XML-string. You may ask why on earth someone would need such a function. Because many SAP developers don’t know anything about XML in general and XML marshalling in specific, so they just concatenate strings and as result they create invalid XMLs. It seems like the favorite word of most SAP consultants is standard, but when it comes to actual W3C, WHATWG, IETF, ISO, … standards, they do not care.

Is it any good?