Независимо от операционной системы, я смог решить проблему с помощью @HieryNomus, у которого есть одна библиотека, идеально подходящая для реализации SMB.Ссылка Git: https://github.com/hierynomus/smbj/
Для моей цели я достиг следующей реализации (это только мой тестовый код):
public static void sendCommandToZebraPrinter(String command) throws MalformedURLException, SmbException, IOException {
String username = "username";
String password = "password";
String domain = "mydomain";
String sharedDirectory = "PRINTER_SHARE";
String computerName = "MYCOMPUTER";
SMBClient client = new SMBClient();
try (Connection connection = client.connect(computerName)) {
AuthenticationContext ac = new AuthenticationContext(username, password.toCharArray(), domain);
Session session = connection.authenticate(ac);
try (PrinterShare share = (PrinterShare) session.connectShare(sharedDirectory)) {
InputStream stream = new ByteArrayInputStream(command.concat("\n").getBytes(StandardCharsets.UTF_8));
share.print(stream);
}
}
}
Командная переменная - это команда EPL для принтера Zebra (GC420t), например:
I8,A,001
Q104,024
q863
rN
S2
D11
ZT
JF
OD
R172,0
f100
N
75,33,D,h3,"1"
b363,39,D,h2,"TEST"
b198,33,D,h3,"TEST"
LO154,4,1,73
LO280,4,1,73
A149,27,2,2,1,1,N,"1"
A272,26,2,3,1,1,N,"TEST"
A425,26,2,3,1,1,N,"TEST"
P1
ЕСЛИ КОМАНДА НЕ РАБОТАЕТ: Добавьте \n
в конце команды.