This is a flutter plugin for the Link-OS Multiplatform SDK for Zebra
Feature | iOS | Android |
---|---|---|
Print ZPL from String | :white_check_mark: | :white_check_mark: |
Print ZPL from file | :white_check_mark: | :white_check_mark: |
Print PDF from byte array | :ballot_box_with_check: | :ballot_box_with_check: |
Print PDF from file | :white_check_mark: | :white_check_mark: |
Get printer settings | :white_check_mark: | :white_check_mark: |
Set printer settings | :white_check_mark: | :white_check_mark: |
Check printer status | :white_check_mark: | :white_check_mark: |
Print configuration label | :white_check_mark: | :white_check_mark: |
Run calibration | :white_check_mark: | :white_check_mark: |
Reboot printer | :white_check_mark: | :white_check_mark: |
Currently this plugin only supports TCP/IP connection to the Printer.
Since v3.1.0+1 the plugin supports PDF direct printing on both iOS and Android, before this version, the PDF printing was only available on Android, and it was by using some kind of workaround converting the PDF to image and printing it as image, which was not reliable and caused some issues depending on the document dimensions, etc. Now the PDF Direct printing is the right way and according to the manufacturer, you just need to be sure your printing OS is >= Link-OS v6.3 and you have installed the Virtual Device for PDF Direct.
Steps:
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
No setup required
# Add this line to your flutter project dependencies
zsdk: ^2.0.0+11
and run flutter pub get
to download the library sources to your pub-cache.
final zsdk = ZSDK();
zsdk.doManualCalibrationOverTCPIP(
address: '10.0.0.100',
port: 9100 //optional
)
zsdk.getPrinterSettingsOverTCPIP(
address: '10.0.0.100',
port: 9100 //optional
).then(value) {
final printerSettings = PrinterResponse.fromMap(value).settings;
};
zsdk.setPrinterSettingsOverTCPIP(
address: '10.0.0.100',
port: 9100, //optional
settings: PrinterSettings(
darkness: 10,
printSpeed: 6,
tearOff: 0,
mediaType: MediaType.MARK,
printMethod: PrintMethod.DIRECT_THERMAL,
printWidth: 568,
labelLength: 1202,
labelLengthMax: 39,
zplMode: ZPLMode.ZPL_II,
powerUpAction: PowerUpAction.NO_MOTION,
headCloseAction: HeadCloseAction.NO_MOTION,
labelTop: 0,
leftPosition: 0,
printMode: PrintMode.TEAR_OFF,
reprintMode: ReprintMode.OFF,
)
).then(value) {
final printerResponse = PrinterResponse.fromMap(value);
if(printerResponse.errorCode == ErrorCode.SUCCESS) {
//Do something
} else {
Status status = printerResponse.statusInfo.status;
Cause cause = printerResponse.statusInfo.cause;
//Do something
}
}
zsdk.setPrinterSettingsOverTCPIP(
address: '10.0.0.100',
port: 9100, //optional
settings: PrinterSettings.defaultSettings()
).then(value) {
final printerResponse = PrinterResponse.fromMap(value);
if(printerResponse.errorCode == ErrorCode.SUCCESS) {
//Do something
} else {
Status status = printerResponse.statusInfo.status;
Cause cause = printerResponse.statusInfo.cause;
//Do something
}
}
zsdk.checkPrinterStatusOverTCPIP(
address: '10.0.0.100',
port: 9100, //optional
).then(value) {
final printerResponse = PrinterResponse.fromMap(value);
Status status = printerResponse.statusInfo.status;
print(status);
if(printerResponse.errorCode == ErrorCode.SUCCESS) {
//Do something
} else {
Cause cause = printerResponse.statusInfo.cause;
print(cause);
}
}
zsdk.rebootPrinter(
address: '10.0.0.100',
port: 9100, //optional
).then(value) {
final printerResponse = PrinterResponse.fromMap(value);
Status status = printerResponse.statusInfo.status;
print(status);
if(printerResponse.errorCode == ErrorCode.SUCCESS) {
//Do something
} else {
Cause cause = printerResponse.statusInfo.cause;
print(cause);
}
}
zsdk.printZplFileOverTCPIP(
filePath: '/path/to/file.pdf',
address: '10.0.0.100',
port: 9100, //optional
).then(value) {
final printerResponse = PrinterResponse.fromMap(value);
Status status = printerResponse.statusInfo.status;
print(status);
if(printerResponse.errorCode == ErrorCode.SUCCESS) {
//Do something
} else {
Cause cause = printerResponse.statusInfo.cause;
print(cause);
}
}
zsdk.printZplDataOverTCPIP(
data: '^XA^FO17,16^GB379,371,8^FS^FT65,255^A0N,135,134^FDTEST^FS^XZ',
address: '10.0.0.100',
port: 9100, //optional
).then(value) {
final printerResponse = PrinterResponse.fromMap(value);
Status status = printerResponse.statusInfo.status;
print(status);
if(printerResponse.errorCode == ErrorCode.SUCCESS) {
//Do something
} else {
Cause cause = printerResponse.statusInfo.cause;
print(cause);
}
}
zsdk.printPdfFileOverTCPIP(
filePath: '/path/to/file.pdf',
address: '10.0.0.100',
port: 9100, //optional
).then(value) {
final printerResponse = PrinterResponse.fromMap(value);
Status status = printerResponse.statusInfo.status;
print(status);
if(printerResponse.errorCode == ErrorCode.SUCCESS) {
//Do something
} else {
Cause cause = printerResponse.statusInfo.cause;
print(cause);
}
}
Check the example code for more details