在Linux上使用Java CIFS客户端库发送文件
我试图将一个包含打印数据(来自Zebra打印机的数据)的文件从Linux机器发送到Windows机器上的共享打印机,但没有成功,我尝试了所有方法。我的最后一个想法是,首先尝试在Linux机器上通过命令行工作,然后用Java执行相同的解决方案,结果是:它通过命令行工作,但在Java中不工作
我在Linux上的命令行解决方案有:
smbclient \\\\host\\printer_share -U 'domain/user%pass' -c "put file_name"
使用smbclient的解决方案非常有效,因此我考虑在Java中使用jCIFS,但在打印机中不起作用。在同一主机的共享文件夹中工作,但在打印机中不工作,但是通过命令行和smbclient都可以工作。有人知道我哪里出了问题吗
我的java代码:
public static void sendFileToPrinter(String commandsToPrinter) {
String user = "user";
String pass = "pass";
String domain = "domain";
String path = "smb://host/printer_share/file_to_print";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, user, pass);
SmbFile smbFile = new SmbFile(path, auth);
SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile);
smbfos.write(commandsToPrinter.getBytes());
System.out.println("Work");
}
Java错误:
# 1 楼答案
不管操作系统如何,我都能在@HieryNomus的帮助下解决这个问题,他有一个实现SMB的完美库。Git链接:https://github.com/hierynomus/smbj/
出于我的需要,我通过以下实现实现了(这只是我的测试代码):
命令变量是Zebra打印机(GC420t)的EPL命令,例如:
如果命令不起作用:在命令末尾添加
\n