2011-10-01 2 views
4

자바로 인쇄 할 때 입력 빈을 지정하고 싶습니다.javax.print로 인쇄 할 때 빈/용지함 선택

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 

출처 : I는 입력 쓰레기통에 해당한다 MediaTray 클래스를 발견했습니다 http://tools.ietf.org/html/rfc2911

문제는 내가 입력 함을 지정하는 응용 프로그램의 숫자를 얻을 것이다. 단순히 enum int 값을 매핑하거나 숫자가있는 enum 값을 가져 오는 일반적인 방법은 무엇입니까? 트레이의 번호를 매기는 것이 공식적으로 지원됩니까?

RFC에서 출력 용지함에 해당하는 속성을 찾을 수 없습니다. 그것을 할 수있는 방법이 있습니까?

그리고 가장 중요한 질문은 프린터 인터페이스의 안정성이 어느 정도입니까? 대부분의 쓰레드는 트레이가 작동하지 않을 수 있기 때문에 결국 포기한 것에 대해 사람들이 묻는 곳에서 발견되었습니다.

모든 경험이 인정 될 것입니다.

+4

* "그리고 가장 중요한 질문입니다 프린터 인터페이스가 다소 안정적입니까? "*이 API는 Sun/Oracle이 환경 보호에 기여한 것일 수 있습니다. '나무를 구해라!' ;) –

+0

[javax.print library를 사용하여 [특성 (용지함 제어, 양면 인쇄 등 ...)을 사용하여 인쇄] (http://stackoverflow.com/questions/14328012/printing-with-attributestray-control-duplex- etc-using-javax-print-library) –

답변

2

이 속성은 javax.print.attribute.standard.MediaTray에 정의되어 있습니다. 참조 : Standard Attributes: Media.

+0

질문에서 언급했듯이, 이미 MediaTray를 발견했습니다. 게시 한 기사에는 유용한 정보가 많이 들어 있습니다. MediaTray의 String 속성을 하위 클래스로 만드는 방법 그러나 제 질문 중 하나에 대답하기 위해 명시적인 정보를 찾을 수 없었습니다. – box

+0

응용 프로그램이 입력 함을 번호로 지정한다고 언급했습니다. 어떤 응용 프로그램입니까? 해당 번호 체계는 어디에서나 문서화되어 있습니까? 특정의'MediaTray' 정수에 대해서, 그 수치를'EnumSyntax # getValue()'와 비교할 수 있습니다. – trashgod

+1

'MediaTray' 상수를 직접 검사하는 것이 더 쉽습니다. 'TOP'은 0,'MIDDLE'은 1 등입니다. – trashgod

1

TOP와 같은 일반 상수 대신 실용 트레이 번호를 사용하려면 추가 코딩을해야합니다. 주어진 프린터의 모든 용지함 번호를 나열하는 열거 수는 몇 개의 용지함이 있을지 알 수 없기 때문에 알 수 없습니다. attributetype Media.class의 모든 지원되는 속성 값에 대해 프린터 서비스을 쿼리해야합니다. 그러면 다양한 유형의 목록이 제공됩니다. 결과를 인쇄하면 용지함이이 목록의 어딘가에 있어야합니다. 이 목록에서 트레이를 가져와 자신을 구성하지 않는 것이 중요합니다. 인쇄 프레임 워크의 일부 내부 코드가 여기에 연결되어 있기 때문입니다.

참고 : 인쇄 API에는 용지함 인쇄와 관련된 몇 가지 버그가 있습니다 (특히 유닉스에서). 가 신속하게 해결하기 위해 투표를 : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7107175 및/또는 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7107138

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; 
    } 
} 
관련 문제