Skip to main content

I have a bunch of Android Tablet users who would like to print .ZPL files from a Zebra Label Printer. Usually I use DeviceHub or a .bat file to get this moving, but Android doesn’t support .bat and it looks like DeviceHub isn’t supported either.

How do we print .ZPL files to a label printer in the Android OS?

You are going to have to elaborate on what you’re trying to do exactly.

Android can print directly to a Zebra printer via Bluetooth using an app like this, for example: https://play.google.com/store/apps/details?id=com.zebra.kdu&hl=en_US&gl=US

Presumably, since you are on the Acumatica Community forum, what you are actually asking is “How can I print from the Acumatica Android App to a Zebra printer?”...but you should clarify whether I am right aboiut this or not.

Acumatica is a “client/server” application, with the client being either a web browser, or in the case of the Android mobile app a MSDL interpreter that presents the interface for mobile consumption. In either case, you are ultimately running code on the Acumatica server, so you can have the DeviceHub print to the Zebra Label printer directly.

I have already done a lot of testing re: DeviceHub and label printing… see here: 

Bottom line, DeviceHub is not the best way to print labels from Acumatica for performance reasons (bur you can code up a solution to do it this way if you really want to).

As mentioned in the post I reference, you can use a service called PrintNode to print labels from Acumatica to a mobile printer. You would create a PXAction that kicks off this print job, and then call it from the mobile app. This can get complicated depending on which screen you want to modify to do this.

Bottom line….elaborate on what you want to do exactly and I can provide further advice.

You will also want to investigate Asgard Labels, which has already built most of the PrintNode solution for you with a nice GUI for management: https://www.acumatica.com/acumatica-marketplace/asgard-alliance-software-asgard-labels/


Excuse my ignorance here, printers are not my strong suit. Acumatica downloads a .zpl file for our use. On a windows machine, this file needs to go to a printer, but an application is used to send that file. DeviceHub is one such application. Usually, I build a .bat file and set it as the default app for .zpl files. All the .bat file does is send the file to a printer using the following syntax with a printer a named Zebra:

Net use LPT1: \\%ComputerName%\Zebra
Copy %1 LPT1
Net use LPT1: /Delete

How would I get something like this to work on Android? Again, I have a zpl file downloaded, but I don’t know how to get it from the downloads folder to a printer. Is PrintStation what I’m after as my application to send a .zpl file to a printer? It kind of looks like it from the app store description, but again, I’m a bit ignorant here. The Android universe is not my area of expertise by any means. Thank you for linking me to those resources, that is super helpful.

 


Maybe you can further elaborate on your workflow? What is the label your are trying to print? Is it a static label (i.e. a corporate logo), or does the zpl file change depending on context (i.e. printing information about a specific item the user is looking at, or a specific shipment, etc)?

I would argue that in a well-designed system, your users really shouldn’t be manipulating zpl files. ZPL II is the most widely used programming language for Zebra printers, and allows yout a lot of flexibility/specificity with regards to printer output. But the truth about label printing is that to do it right, it’s usally label media type + label printer type/configuration + zpl code that dictates the output. So for example, if you are printing with an industrial Zebra ribbon printer, on 5x7 thermal transfer labels, then your Zebra code might look different to print to that printer than if you were printing to a 3x5 label in a mobile direct thermal printer.

I’m not trying to blow your mind with these details...the point is that it’s pretty simplistic to just say “I have a ZPL file”. Maybe step 1 would be for you to post your zpl file to this thread, along with an explanation of how that zpl file is generated in Acumatica (was this a customization someone wrote)? Do you have a single Zebra label printer you usually print to? What is the model number of this printer and what kinds of labels do you put in it?

To answer your question about NET USE, this is a windows command for sending files straight to a printer: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/gg651155(v=ws.11)

This command you posted creates a connection to the Zebra printer, sends the file to the printer using the windows COPY command, and then deletes the connection to the printer. This will work of course, but it’s a pretty painful way to print labels. We can imagine a system where you configure the printer details inside of Acumatica and DeviceHub or Printnode, and then you click a button and the label prints automatically to your printer over the network. That would be a much more user friendly setup.

However, perhaps you will tell me you only print 1 label per month or year, in which case this setup might be fine. But if you are doing any sort of volume at all, this seems administratively burdernsome and error prone (your downloaded zpl files will likely all have the same name, so just managing that could be annoying if their content is different).

Anyway, step 1 still is to describe WHAT you are doing in more detail (not technically speaking...procedurally speaking). i.e. “Every Monday Suzie needs to print 5 labels to ship packages to our other branch”….


UPS, FEDEX, and all carriers output a zpl file format from our system for printing. I need that label to print out of a Zebra printer. Usually it downloads, then we just double-click to open and since it targets the .bat file it prints right out of the zebra printer. Easy wins. Guessing 30 labels per day?

Now, I have users on an Android tablet. Same thing, they get the carrier labels to download in a .zpl format, but I can’t find a way to send that file from their downloads to the zebra printer. right now, I just direct them to a windows machine.


Ok I see. Based on your bat file commands, it’s possible this printer is pretty old. I can’t tell if it’s actually an LPT printer though, or just using the LPT port. If you want to post a picture of the plug going from the printer, and the plug going into the computer, I can confirm for sure. Also post a picture of the model number of the Zebra printer.

I usually prefer to network up Zebra printers, because it allows for better remote support and troubleshooting, and tends to be more reliable. If it is an old school LPT plug printer, it would also make it easier to connect it to Android over the network, since there don’t seem to be parallel port drivers for Android, per this thread: https://stackoverflow.com/questions/40656651/android-communicate-with-printer-using-usb-to-lpt-adapter

But send the pics first, and I can give further advice.

 

 

 


I don’t have images, the printer is in another state, as are the warehouse users. If there’s not an easy solution to just send out a .zpl file to a printer on Android, that’s fine. I can have them return to their Windows devices until Acumatica releases something that will handle their carrier labels on Android.


LIke a lot of things, the devil is in the details. There are a lot of ways to do what you’re trying to do, but to do it right will mean understanding which devices you are using, how they are connected to your computers currnetly, and then to craft a solution around that. For example, based on the bat file, it seems like you probably have multiple computers, each with a label printer connected via parallel port. Windows has a long legacy of printing to devices going back to parallel, serial, and before, so this isn’t an issue generally. Android, being a newer operating system, has less support for legacy devices.

However, using DeviceHub, you could share these printers from your Windows computers, and then print to them over the network via DeviceHub or PrintNode from the Android tablet. You could also share the printers on Windows, and then print to them from Android via the share: https://www.quora.com/Is-there-an-easy-way-to-print-from-the-Android-mobile-device-to-windows-network-shared-printer#:~:text=If%20you%20got%20an%20Android,Link%20TL%2DPS110U%20Single%20USB2.

Someone has clearly configured your Windows computers to execute that bat file when a .zpl file is opened on Windows. It then sends the file to the local Zebra printer and prints. This is kind of old school, but clearly it works for what you’re trying to do. There are a number of different ways to do the same on Android, but perhaps some limitations based on the way the printers are connected up (which is why I’m asking about that). So there is a way to do what you want, but it will take some further thought.

I will tell you that I recently created a solution to label capital equipment in an office building. I gave the users a tablet and barcode scanner, where they scan the barcode generated by their ERP system, and it prints a durable label on a Zebra printer that they can stick on the capital equipment. I was deciding between an Android and Windows tablet as the device to implement this solution, and I chose Windows tablet for its way better support for Zebra vs. Android. That’s not to say you can’t do what you want from Android, you can, but it might be a little trickier.

 


I like the idea of sending it to windows, so the solution is less obscure. I’ll work from that link. Thanks for your help!

 

And I 100% your choice of Windows for the tablets. My hands are tied, I am forced into Android with this company. This will definitely be a topic next time the conversation comes up.


Hi @Michael Hansen ,

Hope you are doing well.

I have an idea for this, please try below:

Expose the Shipment screen and the “Print labels” button to the mobile app.

Choose the Printer defined by the device hub (as Default printer)/it should be the Label/ZPL printer in your case.


Once the above steps are done, user can access the shipment from mobile and click on “Print Labels” that should print the ZPL to defined printer.
 

 


Hi @Michael Hansen , did @ramuv9’s solution work?

I have a customer with the same issue.

Thanks!


Reply