如何从 JAVA 获取 Zebra USB 打印机状态

How to get Zebra USB printer status from JAVA

我的 Zebra TTP 7030 打印机通过 USB 连接到本地计算机。

我可以使用 javax.print API 打印数据,但我无法从打印机获取打印机状态或任何数据。

我试图从 Java printService 属性获取打印机状态,但它没有 return 任何关于打印机实时状态的有价值信息。

Class<? extends Attribute>[] supportedAttributeCategories = (Class<? extends Attribute>[]) service.getSupportedAttributeCategories();

            for (Class<? extends Attribute> category : supportedAttributeCategories) {
                DocFlavor[] flavors = service.getSupportedDocFlavors();
                for (DocFlavor flavo : flavors) {
                    Object supportedAttributeValues = service.getSupportedAttributeValues(category, flavo, service.getAttributes());
                    if (supportedAttributeValues instanceof Attribute) {
                        Attribute attr = (Attribute) supportedAttributeValues;
                        attribSet.add(attr);
                    } else if (supportedAttributeValues != null) {
                        Attribute[] attrs = (Attribute[]) supportedAttributeValues;
                        for (Attribute attr : attrs) {
                            attribSet.add(attr);
                        }
                    }
                }
            }

            for (Attribute attr : attribSet) {
                System.out.println(attr.getName());

                System.out.println(service.getDefaultAttributeValue(attr.getCategory()));
            }

Zebra 的 Link OS SDK 不支持我的打印机。有没有办法获取打印机状态?

解决方案: 我使用 JNA 获取我的 Zebra 打印机的 Windows 打印机状态。

下面是如何使用 JNA 获取打印机信息的示例 How can i get a printer's make and model in Java?

如果 Zebra 打印机仍然可以使用 ZPL,您可以发送命令,只需打开虚拟 Com 端口并直接发送基于 ZPL 文本的命令

(在 Z4000 及以下它工作正常) ~HS 获取状态。