0

I need to print labels with a barcode (typically Code 128) from my .NET Windows application. Since customers have different printers - different Eltron/Zebra models and different manufacturers (like GoDEX, Sato, ...) - I would like to see my application to be entirely (or at least mostly) agnostic to the actual printer model.

I have therefore tried to print such labels with barcodes using the printer's Windows driver. In that approach, the barcode apparently gets rendered as an image on the PC and the printer just outputs it as a pixel image. Perhaps the entire label gets rendered as an image, I am not sure about that. As a side-note: I am actually using XtraReports to print the labels, but that by itself should not contribute to the problem below.

However, that approach yields poor barcode quality. I have had to troubleshoot the output many times by adjusting printer driver settings (e.g. temperature, speed, etc.) and still some percentage of the barcodes is not accepted by subsequent systems.

I know I could just send "raw" EPL/ZPL commands to a Zebra printer and it would render the barcode itself - resulting in a much better quality.

However, that approach has two downsides:

  • first, the the raw commands may differ between printer models and quite likely between manufacturers. Not sure of EPL/ZPL is such a widely supported "lingua franca"
  • second, if a customer would want the label content to be changed/re-arranged, then that becomes a pretty un-intuitive job - specifically compared to just re-designing the label in XtraReports. I know there is Z-Designer, but that does not integrate in my application and is (presumably) specific to Zepra printers.

Is there an approach to basically combining the best of both worlds. Basically use the Windows driver to draw/print the overall label, but let the printer render the barcode in its best quality?

I am vaguely aware of using barcode fonts that could be loaded from or onto the printer, but am not sure how much better the quality is, how much setup would be needed on the PC and how well that is supported across printer models and manufacturers. Seems like another can of worms to me.

user1211286
  • 681
  • 5
  • 17
  • EPL/ZPL Would be more supported for thermal printers than trying to print natively to the driver. However, you will have to learn to navigate the 1000 page zpl specs. As such, im not sure you'll find a favorable solution to this – TheGeneral Jun 26 '20 at 06:12
  • At my old job we just used a 39 barcode font and it worked great. Could the issue be you need to first overscale the barcode image and then shrink it down? That is the only thing I can think of that might cause bad readings off the top of my head. – Carter Jun 26 '20 at 06:32
  • Regarding the overscaling: I am currently using XtraReports which generates the barode and have done some testing printing directly. From what I understand, the bardcode is drawn as a _vector_ image onto the virtual printer page, so the loss of quality must be happening somewhere else. – user1211286 Jun 26 '20 at 06:44

1 Answers1

1

I've built a warehouse dispatch application in MS ACCESS using VBA to print barcode labels to Zebra printers. There is no easy answer here. 3 common routes: worst option: using 3rd party software (like BarTender) but typically cannot be integrated and effectively a two step process which created the problem of printing wrong file, reprinting duplicate labels and fraud; better option: raw printing (via windows generic text driver) directly to the printer using ZPL which is more common than you'd expect (or EPL or CPCL or down some other rabbit hole) best label result but problem is it's highly technical, label layout changes are a pain (you seem familiar with these issues already), lots of support calls; best option (for me): let the printer's vendor print driver do the work (config required), do the layout as a report in MS ACCESS (or your .NET app), format barcode text as a user defined font, in the zebra printer driver map that font to the barcode required (config type, size, orientation, optional text, etc. in the driver), fiddle with the driver settings on speed, etc. till the label is of similar quality as raw/zpl, save/export the driver config settings to a file (most common support call I just reload this file, time saver). Downside, some upfront planning is required to coordinate the layout particularly the barcode with the driver mapping via user font to the desired barcode. This has worked for me through several versions of MS ACCESS & printer changes over the years.

  • 1
    The name of this feature is [Pass-Through mode](https://www.zebra.com/us/en/support-downloads/knowledge-articles/how-to-pass-through-or-use-passthrough-for-printer-code-with-the-zebra-designer-driver.html). – GSerg Mar 22 '21 at 12:59
  • @GSerg the "command font" (pass-through) option is actually a variation to raw printing, I just always felt if one is going to go through the effort to learn raw coding best to serve it up via code in the application directly to a generic text print driver (which btw can work through RDP session), my option 3 is using the "barcode font" in the driver (this does not work through a RDP session). If it is a matter of testing ZPL code this is a great option http://labelary.com/viewer.html – Johannes Hamman Mar 22 '21 at 14:56