在 Java 中打印到特定打印机 (IPP URI)
在Java中,有没有办法打印到特定的IPP打印机?我发现的所有示例代码和教程都集中在如何使用类似如下内容打印特定类型的文档上:
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
PrintService[] pservices =
PrintServiceLookup.lookupPrintServices(flavor, aset);
if (pservices.length > 0) {
DocPrintJob pj = pservices[0].createPrintJob();
try {
FileInputStream fis = new FileInputStream("test.ps");
Doc doc = new SimpleDoc(fis, flavor, null);
pj.print(doc, aset);
} catch (FileNotFoundException fe) {
} catch (PrintException e) {
}
}
此代码段只是打印到找到的第一台能够打印文档的打印机。在我的情况下,我想通过URI查找打印机,但似乎不支持这一点。我尝试使用 , 而不是 ,并添加属性,但这不会返回任何打印机。我怀疑查找服务正在寻找可以更改其目标URI的打印机,而不是查找具有该URI的打印机。PrintServiceLookup
PrintServiceAttributeSet
PrintRequestAttributeSet
PrinterURI
作为最后的手段,我想过只枚举返回的所有 s,但 URI 不在任何属性中。打印机名称在那里,但我需要 URI。PrintService
lookupPrintServices
对于后台,我的 Web 应用需要根据当前用户将条形码打印到特定打印机。每个用户都与打印机 URI 相关联,该 URI 指向 CUPS 服务器上的打印机。打印机 URI 是我拥有的唯一信息,我无法将打印机名称限制为与 URI 的 URI 或子字符串匹配。
编辑:为了澄清一点,我不需要渲染数据,我只需要将一个blob复制到给定的打印机。我无法弄清楚的部分是如何通过其IPP URI识别打印机。