【发布时间】:2019-03-22 07:11:38
【问题描述】:
我尝试将包含打印数据(来自 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 错误:
【问题讨论】:
-
你有什么错误吗?
-
我在上面添加了图片
-
打印机是否仍支持 SMBv1?您是否尝试过使用 SMBv2 库,例如 github.com/hierynomus/smbj?
-
@HieryNomus 我在 GitHub 上阅读了您的文档并设法完成了我需要的工作。感谢您对项目的帮助和祝贺。
-
也许可以将答案添加到您的问题中。这将帮助其他用户;)
标签: java linux zebra-printers smb jcifs