1
Sr. Software Engineer
Steven Si
Power Up Your Toolkit with the Zebra Printer SDK
Link-OS Multiplatform SDK
ZEBRA TECHNOLOGIES
2
EASY INTEGRATION
Our printers integrate into
your existing technology
architecture — painlessly.
SUPERIOR
MANAGEABILITY
Simplified yet powerful tools
for easy remote management
of any size printer
deployment.
BETTER
PERFORMANCE
Enable your printers to
perform at their peak for
simple, effortless printing.
How do users benefit from unmatched value
ZEBRA TECHNOLOGIES
VISIBILITY TOOLS
MANAGEMENT TOOLS PRODUCTIVITY TOOLS
DEVELOPMENT TOOLS
3
Multiplatform
SDK
Browser
Print
PrintConnect Cloud
Connect
Printer Profile
Manager Enterprise
Bluetooth® Printer
Management
Printer Setup
Utility
ZebraDesigner Virtual
Devices
PDF
Direct
MDM/EMM
Connectors
Visibility
Services
Enterprise
Connectors
Print
Station
Pairing
Solutions
How do users benefit from unmatched value
ZEBRA TECHNOLOGIES
Zebra’s one-of-a-kind enterprise
printer operating system that
powers Print DNA capabilities:
4
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
Link-OS has evolved to meet
modern needs
The most intelligent printer operating system in existence
ZEBRA TECHNOLOGIES
ZQ511 & ZQ521 SeriesZQ300 Plus Series
ZQ600 Plus Series
ZT600 Series
ZT200 Series
ZT500 Series
ZT400 Series
ZD500R
ZD611 & ZD621 Series
ZD510-HC
ZD421 Series
ZD411 Series
The Link-OS Printer family
ZEBRA TECHNOLOGIES
6
Multiplatform SDK
Browser Print
PrintConnect
Cloud Connect
INTEGRATE
Development Tools
ZEBRA TECHNOLOGIES
Multiplatform SDK
Android, Windows, iOS, Linux
Xamarin cross platform support
Java, .Net, Objective C
Extensive Source Code & Free License
Benefits
1. One Development toolkit for multiple OS’s, printers
2. Frequent updates & new features
3. Comes with source code, documentation
Link-OS Multiplatform SDK
ZEBRA TECHNOLOGIES
Link-OS Multiplatform SDK
Rich functionalities
8
Where to get it
SDK
o Link-OS
Multiplatform SDK
o Android, iOS, Xamarin
o PC (Java, .NET, .NET/Xamarin)
o WebServices
Ways to find it:
o https://www.zebra.com/us/en/software/
printer-software/multiplatform-sdk.html
o Launchpad
Online Documentation
o http://techdocs.zebra.com/
Printer Discovery
USB, Bluetooth, BTLE
or Network
Printer Connectivity
USB, Bluetooth, BTLE
Network, WebSocket
Printer Status
Checking
Errors, Warning,
Alerts
Developer Demos, Sample Code & Documentation
Both Source Code and Compiled demo code for commonly used features
Sample code for all major functions
Extensive API documentation that embeds within IDE platforms
Printer 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
ZEBRA TECHNOLOGIES
Printer Discovery
USB, Bluetooth
®
, BTLE, Network
USB
ZDesigner Driver USB Connection
UsbDiscoverer.getZebraDriverPrinters(discoveryandler);
Direct USB Connection
UsbDiscoverer.getZebraUsbPrinters(discoveryandler);
Bluetooth
BluetoothDiscoverer.findPrinters(discoveryandler);
Bluetooth Low Energy
BluetoothLeDiscoverer.findPrinters(discoveryandler);
Network
NetworkDiscoverer.findPrinters(discoveryandler);
9
ZEBRA TECHNOLOGIES
Printer Connection – Printing
USB, Bluetooth
®
, BTLE, Network
USB
ZDesigner Driver USB Connection
Connection conn =
new DriverPrinterConnection(printerName);
Direct USB Connection
Connection conn =
new UsbConnection(usbDirectAddress);
Bluetooth
Connection conn =
new BluetoothConnection(btMacAddress);
Bluetooth Low Energy
Connection conn =
new BluetoothLeConnection(btMacAddress);
Network
Connection conn =
new TcpConnection(ipAddr, portNum);
10
ZEBRA TECHNOLOGIES
Printer Status Connection – Not for Printing
Bluetooth
®
, BTLE, Network
Bluetooth
Connection statusConn =
new BluetoothStatusConnection(btMacAddress);
Bluetooth Low Energy
Connection statusConn =
new BluetoothLeStatusConnection(btMacAddress);
Network
Connection statusConn =
new TcpStatusConnection(ipAddr,
TcpStatusConnection.DEFAULT_STATUS_TCP_PORT);
Connection for Status & SGD (JSON) Only
11
ZEBRA TECHNOLOGIES
Multichannel Connection
Status Channel and Printing Channel
Bluetooth
Classic
MultichannelConnection mConn = new
MultichannelBluetoothConnection(btMacAddress);
BTLE
MultichannelConnection mConn = new
MultichannelBluetoothLeConnection(btMacAddress);
Network (TCP)
MultichannelConnection mConn = new
MultichannelTcpConnection(ipAddr);
Network (WebSocket)
MultichannelConnection mConn = new
MultichannelRemoteConnection(uniqueId);
12
ZEBRA TECHNOLOGIES
Multichannel Connection – Cont.
Status Channel and Printing Channel
SDK automatically uses the
proper channel for certain
API calls
The status channel is
automatically used for
getCurrentStatus()
SGD.SET, SGD.GET &
SGD.DO
13
ZEBRA TECHNOLOGIES
Printer Status
getCurrentStatus()
Printing Channel
ZebraPrinter printer =
ZebraPrinterFactory.getLinkOsPrinter(printingConn);
PrinterStatus status = printer.getCurrentStatus();
Note: Calling getCurrentStatus() on the printing channel
might be blocked by an ongoing ZPL printing.
Status Channel
ZebraPrinter printer =
ZebraPrinterFactory.getLinkOsPrinter(statusConn);
PrinterStatus status = printer.getCurrentStatus();
Multichannel
ZebraPrinter printer =
ZebraPrinterFactory.getLinkOsPrinter(multiConn);
Or
ZebraPrinter printer =
ZebraPrinterFactory.getLinkOsPrinter(multiConn.getStatusChannel());
PrinterStatus status = printer.getCurrentStatus();
14
ZEBRA TECHNOLOGIES
Printer Configuration
SGD (SET-GET-DO) or a File
SGD.SET
// Set the device.languages on the printer to ZPL
SGD.SET("device.languages", "zpl", conn);
// Set the media.type on the printer to label
SGD.SET("media.type", "label", conn);
SGD.GET
// Get the link_os version from the printer
String osVersion = SGD.GET("appl.link_os_version", conn);
// Get the firmware version from the printer
String fwVersion = SGD.GET("appl.name", conn);
SGD.DO
// Reset the printer
SGD.DO("device.reset", "", conn);
15
Configure with a file
Put SGD configuration commands in a file.
Send the file with the SendFileContents() API over the Printing Channel
ZEBRA TECHNOLOGIES
Printing Label
Recommended Common Workflow
1. Discover the Printer
2. Open the Connection
3. Check/Set the Language to ZPL
4. Check the Printer Status
5. Send the ZPL Label (or File) to the Printer
6. Check the Printer Status Again
7. Close the Connection
16
ZEBRA TECHNOLOGIES
Resources
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
17
Questions
ZEBRA TECHNOLOGIES
18
Thank You
ZEBRA and the stylized Zebra head are trademarks of Zebra Technologies Corp., registered in many
jurisdictions worldwide. All other trademarks are the property of their respective owners.
©2023 Zebra Technologies Corp. and/or its affiliates. All rights reserved.
ZEBRA TECHNOLOGIES