我想用Java打印时指定输入箱。我找到了应该与输入箱对应的MediaTray类:
The following standard values are defined for input-trays (from ISO
DPA and the Printer MIB):
'top': The top input tray in the printer.
'middle': The middle input tray in the printer.
'bottom': The bottom input tray in the printer.
'envelope': The envelope input tray in the printer.
'manual': The manual feed input tray in the printer.
'large-capacity': The large capacity input tray in the printer.
'main': The main input tray
'side': The side input tray
来源:http://tools.ietf.org/html/rfc2911
问题是,我从应用程序中获取了一个指定输入bin的数字。我可以简单地映射enum int值或使用数字获取枚举值的常用方法是什么?是否正式支持对托盘进行编号?
我在RFC中找不到与输出箱相对应的属性。还有办法吗?
最重要的问题:打印机接口的可靠性是否更高?我发现人们询问托盘最多的线程最终放弃了,因为他们无法让它发挥作用。
任何经历都将受到赞赏。
答案 0 :(得分:2)
答案 1 :(得分:1)
如果要使用实际托盘编号而不是像TOP这样的常规常量,则必须进行一些额外的编码。
没有任何枚举列出给定打印机的所有托盘编号,因为在编码时将不知道将有多少托盘。
您需要在打印机服务中查询属性类型Media.class
所支持的所有属性值。这将为您提供不同类型的列表。
打印结果,托盘应该在此列表中的某个位置。从这个列表中取出托盘并不自行构建它是很重要的,因为打印框架中的一些内部代码与此链接。
注意强>: 打印api有一些与托盘打印相关的错误(特别是在unix上)。 要快速解决它们,请投票支持: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7107175和/或 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7107138
答案 2 :(得分:1)
如何打印到“纸盘1”(如果存在):
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
Media[] supportedMedia = (Media[]) prnJob.getPrintService().getSupportedAttributeValues(Media.class, null, null);
for (Media m : supportedMedia) {
if (m.toString().equals("Tray 1")) {
aset.add(m);
break;
}
}