使用javax.print打印时选择bin / tray

时间:2011-10-01 09:44:06

标签: java printing

我想用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中找不到与输出箱相对应的属性。还有办法吗?

最重要的问题:打印机接口的可靠性是否更高?我发现人们询问托盘最多的线程最终放弃了,因为他们无法让它发挥作用。

任何经历都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

这些属性在javax.print.attribute.standard.MediaTray中定义。另请参阅Standard Attributes: Media

答案 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;
    }
}