Our business uses custom internal software to create shipping labels to be printed on large high-speed label printers.
What options are available to developers (libraries, services, full-blown-software, etc.) for assisting in the process of creating a custom-formatted label and sending it to a dedicated label printer?
More background information...
Instead of using software provided by a shipping company (such as UPS or FedEx), our business uses our own internal software to create shipping labels to meet high demand at peak times of the year. Our current code to handle this process is in VB6 and is tightly-coupled to create printing instructions in the EPL printing language. We stream the data to the Windows print spooler, which is responsible for handing it off to the printer. This works great in our current production environment with Zebra printers.
Our shipping vendor is changing the type of printer that they use this year, and it looks like we may not be able to use our EPL code any more. At best, we might be able to translate our code to ZPL, but that still is going to take a ton of work ("tightly coupled" was the operative phrase in the previous paragraph) and I still haven't figured out how to send ZPL instructions to the printer.
In my conversation with our senior developer, I got to thinking that there must already be solutions for printing shipping labels for these types of printers (businesses print shipping labels all the time, right?). My hope is that there are libraries or software packages available that can provide an API for formatting a label and will handle talking to Windows Spooler or the Printer itself to make sure the label gets communicated in a language that the printer is expecting.
Our current code for this application is in VB6, but if there are .NET solutions available, we'd be open to using them as well. Any suggestions would be much appreciated.
My business uses a commercial product called NiceLabel, which has a .NET API for creating labels and a designer for creating the label templates. We used them mostly for barcode labels for items on our shop floor.
I have modified the open source SharpZebra library to allow ZPL printing:
http://sharpzebra.codeplex.com/SourceControl/PatchList.aspx
Every time we've need to do something like this we have written our own ZPL (for instance) manually, and sent this data directly to the printer or Windows print queue (as you are). Conversion from one language to another shouldn't be too difficult as most of these barcode devices have well documented print languages, that's not to suggest it will be a breeze.
ZebraDesigner Pro is a WYSIWYG labeling application which outputs optimized ZPL label formats so you don't have to learn too much ZPL. You can save these formats on your printer and recall them with the proper variable data, or capture the stream and use the ZPL output in your internal software application. Sending the data to the printer can be done with the driver which is bundled with ZebraDesigner, or through direct communication (TCP, USB, COMM, etc).
We're also writing SDKs to make communicating with Zebra printers more seamless. We started with mobile phones (BlackBerry, WinMobile, iPhone, and Android will be out soon), but a desktop API might also be in the works.