DevCon 2025: Connect | Learn | Build
June 4 - 6, 2025, Amsterdam, Netherlands
Presented by Zebra Technologies
Master Zebra Printer SDK and Tools for Label Print Solutions
Presenter: Steven Si, Sr. Software Engineer
Agenda
- Zebra Print DNA
- ZebraDesigner for Developer
- Link-OS Multiplatform SDK
Zebra Print DNA: Unmatched Value
Zebra Print DNA offers significant benefits to users:
- Better Performance: Enables printers to perform at their peak for simple, effortless printing.
- Superior Manageability: Provides simplified yet powerful tools for easy remote management of any size printer deployment.
- Easy Integration: Ensures printers integrate seamlessly into existing technology architectures.
Key Components of Zebra Print DNA:
Development Tools
- Multiplatform SDK
- Browser Print
- PrintConnect
- Cloud Connect
Visibility Tools
- MDM/EMM Connectors
- Visibility Services
Management Tools
- Printer Profile Manager Enterprise
- Bluetooth® Printer Management
- Printer Setup Utility
Productivity Tools
- ZebraDesigner
- Virtual Devices
- PDF Direct
- PDF Connectors
- Enterprise Station
- Pairing
- Zebra Print Solutions
Zebra Link-OS: The Most Intelligent Printer Operating System
Zebra Link-OS is a unique enterprise printer operating system powering Print DNA capabilities. Key features include:
- The ZPL standard: Consistency across all models.
- Cloud connectivity: Secure low-latency connection.
- Battle tested wireless: Over 20 years of experience.
- Unicode: Ready for global solutions.
- Extensible: Evolved to meet modern needs.
The Link-OS Printer Family:
Zebra offers a wide range of Link-OS printers, including:
- ZD500R
- ZD510-HC
- ZD421 Series
- ZD411 Series
- ZD611 & ZD621 Series
- ZT200 Series
- ZT400 Series
- ZT500 Series
- ZT600 Series
- ZQ300 Plus Series
- ZQ511 & ZQ521 Series
- ZQ600 Plus Series
Typical Development Flow of a Print Application
The development process typically involves:
- Create label/receipt template: Using tools like ZebraDesigner.
- Get values: Retrieve data for variables.
- Set variables in template: Populate the template with data.
- Connect to printer to print: Establish a connection using the Link-OS SDK.
- Render label/receipt: Generate the final output.
This process is facilitated by:
- ZebraDesigner: A family of label & receipt design tools.
- APP built with Link-OS SDK: Enables rapid development across Windows, Linux, Android, and iOS.
- Link-OS Printer: Supports various connectivity options including Ethernet, WLAN, USB, Bluetooth, and Serial/Parallel.
What's ZebraDesigner?
ZebraDesigner simplifies offerings with different editions:
- ZebraDesigner Essentials & Professional (Single Installer): For general label design needs.
- ZebraDesigner for Developers (Single Installer): Includes features for ISVs, with options for generic ZPL drivers, variable length templates, and RFID serialization. Supports ZebraDesign Windows v10 driver and Link-OS printers only.
ZebraDesigner Driver Support:
- Supports versatile printer connectivity: Network, USB, Bluetooth, Serial & Parallel.
ZebraDesigner for Developers Edition:
- Features the same UI as Essentials & Professional editions.
- Combines with XML edition functionality for Enterprise Connector & Direct XML solutions.
- Allows exporting "generic" templates based on a "Generic" ZPL driver.
- Supports variable length templates for receipts, including header, body, and footer designs.
- Supports RFID serialization.
XML Templates:
ZebraDesigner for Developers supports XML templates, allowing for data to be stored and recalled, facilitating dynamic label generation.
Link-OS Multiplatform SDK
The Link-OS Multiplatform SDK supports development across multiple platforms including Android, Windows, iOS, and Linux. It offers:
- .NET MAUI cross-platform support.
- Development in Java, .Net, and Objective C.
- Extensive Source Code & Free License.
Benefits:
- One Development toolkit for multiple OS's and printers.
- Frequent updates and new features.
- Comes with source code and documentation.
Rich Functionalities:
- Printer Discovery: USB, Bluetooth®, BTLE, Network.
- Printer Connectivity: USB, Bluetooth, BTLE, Network, WebSocket.
- Printer Status Checking: Errors, Warning, Alerts.
- Font Conversion: True Type to ZPL Font.
- Graphics Conversion: PNG & BMP to ZPL Graphics.
- Template Filling: Fill ZPL templates with variable data.
- Printer Management: Create/send profiles/Printer OS's.
- Command Mode: Scriptable command line.
- Simplified Pairing: Using the Print Touch feature.
Developer Demos, Sample Code & Documentation:
Provides both source code and compiled demo code for commonly used features, sample code for all major functions, and extensive API documentation embedded within IDE platforms.
Where to get it:
- SDK: Link-OS™ Multiplatform SDK for Android, iOS, .NET MAUI, PC (Java, .NET MAUI), WebServices.
- Ways to find it: Links to Zebra's website for the SDK and Launchpad.
- Online Documentation: http://techdocs.zebra.com/
Printer Discovery Examples:
Code snippets demonstrate discovering printers via USB, Bluetooth, and Network connections.
Printer Connection – Printing Examples:
Code examples show establishing connections for printing via USB, Bluetooth, and Network (TCP).
Printer Status Connection Examples:
Examples for connecting for status and SGD (JSON) only via Bluetooth, BTLE, and Network.
Multichannel Connection:
Enables simultaneous Status Channel and Printing Channel communication.
- Bluetooth: Classic and BTLE.
- Network: TCP and WebSocket.
The SDK automatically uses the proper channel for certain API calls. The status channel is automatically used for getCurrentStatus()
, SGD.SET
, SGD.GET
& SGD.DO
.
Printer Configuration
Configuration can be done via SGD (SET-GET-DO) commands or by using a file.
- SGD.SET: Used to set printer properties like language and media type.
- SGD.GET: Used to retrieve printer information such as OS version and firmware version.
- SGD.DO: Used for printer actions like resetting the device.
Configure with a file: SGD configuration commands can be placed in a file and sent using the SendFileContents()
API over the Printing Channel.
Printing Label: Recommended Common Workflow
- Discover the Printer
- Open the Connection
- Check/Set the Language to ZPL
- Check the Printer Status
- Send the ZPL Label (or File) to the Printer
- Check the Printer Status Again
- Close the Connection
Code examples illustrate this workflow, including status checks and handling potential blocking scenarios.
Best Practices: DOs and DON'Ts
DOs:
- Verify/set the desired printer language on the printer.
- Use ZebraPrinterFactory to get a proper instance for the desired printer language.
- Use status port, status channel or multichannel for printer status checking.
- Close printer connection promptly.
- Obtain Local Broadcast Entitlement from Apple for network printer discovery on iOS.
DON'Ts:
- Do not use UI thread to call Link-OS SDK API.
- Do not leave connection open forever (especially Bluetooth).
- Do not assume the printer language.
Resources
- ZebraDesigner for Developer: https://www.zebra.com/us/en/support-downloads/software/printer-software/zebra-designer-3-developer.html
- Link-OS Multiplatform SDK: https://www.zebra.com/us/en/support-downloads/printer-software/link-os-multiplatform-sdk.html
- Online Documentation: https://techdocs.zebra.com/link-os/
- Samples on GitHub:
- Android Samples: https://github.com/ZebraDevs/LinkOS-Android-Samples
- iOS Samples: https://github.com/ZebraDevs/LinkOS-iOS-Samples
- Other Samples: https://github.com/ZebraDevs/Zebra-Printer-Samples