Can you get a high quality label out of your Zebra thermal printer on your Mac without paying for expensive software? Yes!
The Zebra printer is very picky about image size and colors that are not black or white. Simply resizing your label or using anti-aliasing will introduce gray colors and result in a blurry print. Your label may even have gray colors to begin with.
I fixed this by creating an Automator workflow that uses Poppler and ImageMagic to remove the gray colors by applying thresholding. The result is a nice crisp label!
- GX420d
- ZD230
If it works (or doesn't work) for the model you have, I would appreciate your feedback so that I can fill in the list of tested printers and add support if needed. Head over to the Discussions section and let me know.
- Your Zebra printer has already been set up. See: Install CUPS Driver for Zebra Printer in Mac OS
- Poppler and ImageMagick have been installed. It is assumed that these have been installed using Homebrew. (
brew install poppler imagemagick
)
- Download and unzip Print Label.workflow.zip
- From Finder browse to
~/Library/PDF Services
- Click on the Finder app
- Click Go > Go to Folder... (⇧ ⌘ G)
- Enter "~/Library/PDF Services" and press Enter
- Drag
Print Label.workflow
(extension may be hidden) into thePDF Services
folder. You are all set!
- Open the label you want to print. (If you need to crop, I recommend opening the label in Preview: click the Markup button, click the selection tool, select the area you want to print, click Tools > Crop (⌘ K))
- Go to print your label, but don’t actually print. This should be done using the system print dialog.
- Select your Zebra printer as the printer you want to print from.
- Set the paper size to label size you are using. (i.e. 4x6in)
- Make sure the preview matches how you want your label printed.
- From the dropdown on the bottom-left, click "Print Label".
Chrome has its own print dialog which does not make the Automation workflows available. While Chrome does have a "Print using System Dialog" option, there is no preview and it occasionally does not trigger the Automation workflows when selected.
- Start the process to print your label.
- Select your Zebra printer as the printer you want to print from.
- Set the paper size to label size you are using. (i.e. 4x6in)
- Click "Open in Preview" option from the print dialog.
- Follow the General process above.
The workflow is trying to find a printer name that starts with "Zebra" and doesn't find it. There could be two reasons for this:
- The driver for your Zebra printer is not installed. See: Install CUPS Driver for Zebra Printer in Mac OS
- The name of your Zebra printer does not start with "Zebra". You have two options here:
a. Rename your Zebra printer so that it starts with "Zebra". See Renaming your printer.
b. Set the PRINTER
value in the workflow with your Zebra printer's device name. See Editing the PRINTER
value.
The workflow is trying to find a printer name that starts with "Zebra" and it is picking the wrong one because there are multiple. You have a few options in this case:
a. Rename the other printer so that the one you want to print to is the only one with a name that starts with "Zebra". See Renaming your printer.
b. If only one device you want to print to, set the PRINTER
value in the workflow with that Zebra printer's device name. See Editing the PRINTER
value.
c. If you want to print to multiple Zebra printers, make a copy of Print Label.workflow
, one for each printer, and set the PRINTER
value for each copy with the corresponding Zebra printer's device name. Make sure that you set the workflow to an appropriate filename so that you know which workflow corresponds to which printer. See Editing the PRINTER
value.
The PRINTER
value at the top of the workflow was not set to the correct printer device name. Make sure that you have the correct device name value. See Getting the device name for your printer and Editing the PRINTER
value.
The workflow tried to read the printer options and didn't find a matching "Resolution" option. If this happens, I would appreciate feedback. Drop a comment in the Discussions section with the output of lpstat -p | awk '{print $2}' | xargs -t -n1 -I {} lpoptions -p {} -l
.
The workflow tried to determine the appropriate media value based on the page size, but couldn't find a match for your printer. If this happens, I would appreciate feedback. Drop a comment in the Discussions section with the output of lpstat -p | awk '{print $2}' | xargs -t -n1 -I {} lpoptions -p {} -l
.
This will happen if identify
or magick
are not found. This could either be because ImageMagick is not installed or was not installed with Homebrew. You have two options in this case:
a. Install ImageMagick with Homebrew.
b. Correct the path for identify
or magick
at the top of Print Label.workflow
.
This will happen if pdftoppm
or pdfinfo
are not found. This could either be because Poppler is not installed or was not installed with Homebrew. You have two options in this case:
a. Install Poppler with Homebrew.
b. Correct the path for pdftoppm
or pdfinfo
at the top of Print Label.workflow
.
- Go to System Settings > Printers & Scanners
- Click on your Zebra printer.
- Click "Options & Supplies"
- Copy the "Device Name" value
- Browse to the
PDF Services
folder.
- Click on the Finder app
- Click Go > Go to Folder... (⇧ ⌘ G)
- Enter "~/Library/PDF Services" and press Enter
- Double-click on
Print Label.workflow
(extension may be hidden) to open it in Automator. - At the top, fill in your device name as the value for
PRINTER
. See Getting the device name for your printer.
- Save the workflow.
- Go to System Settings > Printers & Scanners
- Click on your printer.
- Change the name of your printer by typing in the "Name" field.
- Click "Done"