Labeling - What is everyone doing? Do you support many different sizes of labels for your customers?

We have many different labels for our product. 2x4,4x8,4x4,etc… The addition of new label sizes is mainly dictated by customers asking for it and us accommodating them.

We have different printers set up for each size and our users have to pick the right one when they go to print which means they have to know the size of the label they are printing before they print it… Kind of hard when you just started a week ago or a month ago.

In short, does anyone else support different label sizes, and if so, do you do it any differently? I am exploring bartender integration capabilities to select a printer, but I don’t know. I have a quick loop using System.Drawing.Printing to loop through installed printers and get their page sizes which I could use to route the label to the correct printer for the user, but that would mean I need to name the bartender labels so that they had the page size in the name or something…

In short, anyone supporting multiple label sizes for your products? If so, what does that printing process look like on the shop floor?

Thanks in advance for any ideas or comments!

1 Like

We store the labels in the db as ZPL code. This means we can easily insert data into the ZPL code and send it directly to the printer to be printed.

Since everything is code it is extremely easy to manage and fits very nicely into BPM’s and Functions.

Here is a website the explains ZPL in more depth.


Do you have different sized labels and different printers for each label size?

Yes, we also have a table with printer names, IP’s and label sizes.

Okay, makes sense. Seems to be the only way to go.

If you are referring to printing from Epicor screens, we have many locations so we base where to print the label by the workstation that the user who is logged on is set to in User Acct Security. For example, if a user is printing from MES, Report Quantity, they generally have their own mobile ptr. We add a print button in the UI. With added code, the event of the Click will check the WorkstationAdapter, then send that printer name along with all the data to print to Bartender.

1 Like

Marta, thanks for sharing. I had another friend tell me they were doing something similar.

But are you always printing the same size label?

For every label format I store in a table and ID, a friendly name for the label, the bartender format file location, the BAQ that generates the data for the label, and the printer that label should print to by default.

I allow in our particular case changing of the label print location on the fly but if it was truly fixed that wouldn’t be necessary.

A way we might do it for the production floor is label printers named with resources in a table that it knows based on resource if printing from an operation what label printer to go to.

Use tables to build a matrix of logic needed to flow the labels where you need them. We have custom label requirements like crazy too. That list of friendly labels I mentioned at the beginning, that ID is stored with part records if it’s part specific.


Thanks Joshua.

It seems that everyone on this thread is using some type of table to handle this organization.

Yes, that is true- we stay consistent on label size for fulfillment & receiving labels. We did have to create a screen off a UD table for Production labels. The dropdown label choice they make has the template name (& path) in User Codes.


We won’t be able to read client settings like windows printers in browser forms anymore isn’t that right @jgiese.wci @hmwillett ?

In other words, I can’t write this code on a kinetic button click, can I?

 foreach (var printer in PrinterSettings.InstalledPrinters)
                PrinterSettings settings;

                settings = new PrinterSettings();

                settings.PrinterName = printer.ToString();

                Console.WriteLine(settings.PrinterName + " " + settings.DefaultPageSettings.PaperSize + Environment.NewLine);

Please don’t critique this code, I threw it together hastily just to get something going. Was copying and pasting a bunch. Or critique it if you want to so you can bring up something that other’s might not know.

I have yet to get into the app studio and fool around like Hannah. Looking forward to doing that soon.

As far as I know, JavaScript does not have the capability to do that.
The best you’re gonna get is maybe to bring up the print dialog window by hijacking some expression field like so:

Which brings up this:

I suspect that’s not what you had in mind, though?

You will have to give them a dropdown to select a printer and the printing be initiated from a function where you can do the normal windows magic

1 Like

Thanks for taking the time to detail this. I don’t know if that is exactly what I had in mind, but it’s something to work off of.

It is the “selecting the printer” part that I would love to automate for our users.

They shouldn’t have to worry about what printer it is. In fact, they only know what printer it is based on experience and repetitive action. If I switched the label today for one of our product lines to 2x4 from 4x8 they would still select the 4x8 printer because that’s what they know. This would then result in the wrong sized label.

Then they would bring it up to a supervisor which is great, they are great at bringing up issues and quality concerns, but I don’t want them to have to learn or guess at which printer the label should be printed on. Especially learn by mistake where they choose the wrong printer and print 20 labels in the wrong size.

I think that’s where some form of table comes in to handle which workstations have which printers and what sizes they can print and what size each label is. It would be clean to map each bartender label to a size in a table as well so that I can do the windows print magic based on that- selecting the printer based on size (much like a multi-tray/multifunction printer does today).

On the other hand I don’t want to force the person who sets up printers to have to maintain a table of IPs and printer names. They should be able to install printers however the want. That’s where I was super excited about being able to read page sizes from installed printers- so I wouldn’t have to ask I.T. to maintain a table with printer names and/or IPs.

Either way, I appreciate everyone’s help and thoughts. @hasokeric and @Ross.Fireball.Kuiper (I love that I can type fireball to tag him) have a similar set up with their labels if I am not mistaken, using work station or another intermediate table. Haso spoke to me a couple years ago and also suggested that I do something to prepare for browser/cloud- less emphasis on client side actions.

I appreciate all the thoughts.


In the past i’ve done Workstations and each MES and HH is tied to a workstation.

We are planning to try to use Epicor out-of-the-box soon using Report Style hack.

Interm we have a BPM Data Form that pop’s up that brings in a drop-down of all BarTender (custom ud field) printers.

1 Like

I am trying to recall the report style hack.

1 Like


We added a Bartender File Drop location into the workstation UD file.

That way all bartender labels are processed thru that single directory on the server. We have a BPM for a workstation that has two different size labels and the BPM checks for the correct size and directs to one or the other printer.