PrintService
PrintService
DocPrintJob을 생성하는 팩토리 역할을 하는 인터페이스예요. PrintService는 프린터의 능력을 설명하고, 프린터가 지원하는 속성에 대해 질의할 수 있어요.
본문
javax.print 패키지에 속하는 인터페이스로, MultiDocPrintService가 하위 인터페이스이고 StreamPrintService가 구현 클래스예요. 인쇄 서비스를 나타내며, 지원하는 문서 flavor와 속성을 조회할 수 있어요.
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) {
}
}
주요 메서드
String getName()
응용 프로그램이 특정 인쇄 서비스를 요청할 때 사용할 수 있는 이 서비스의 이름 문자열을 반환해요. 이름 서비스 같은 적절한 문맥에서는 이 이름이 유일(unique)해야 해요. 어떤 환경에서는 이 유일 이름이 PrinterName 속성으로 정의된 사용자 친화적 프린터 이름과 같을 수 있어요.
DocPrintJob createPrintJob()
지원되는 문서 flavor 중 어떤 데이터든 처리할 수 있는 PrintJob을 생성해 반환해요.
void addPrintServiceAttributeListener(PrintServiceAttributeListener listener)
이 PrintService의 이벤트를 위한 리스너를 등록해요.
void removePrintServiceAttributeListener(PrintServiceAttributeListener listener)
이 인쇄 서비스에서 인쇄 서비스 리스너를 제거해요. 리스너가 더 이상 PrintService 이벤트에 관심이 없다는 뜻이에요.
PrintServiceAttributeSet getAttributes()
이 인쇄 서비스의 상태를 나타내는 프린터 설명 속성 집합을 얻어요. 반환된 속성 집합은 수정할 수 없고, getAttributes() 호출 시점의 속성 집합 "스냅샷"이에요. 나중에 속성 값이 바뀌어도 반환된 집합 내용은 갱신되지 않아요.
<T extends PrintServiceAttribute> T getAttribute(Class<T> category)
단일 지정 서비스 속성의 값을 얻어요. 한 속성의 값만 필요하고 오버헤드를 최소화하려는 클라이언트에게 유용해요. 서비스가 지원하지 않으면 null을 반환해요.
- 예외
NullPointerException:category가null인 경우 - 예외
IllegalArgumentException:category가PrintServiceAttribute인터페이스를 구현하는Class가 아닌 경우
DocFlavor[] getSupportedDocFlavors()
이 PrintService에 대한 작업을 설정할 때 클라이언트가 지정할 수 있는 인쇄 데이터 형식을 알아내요. 형식은 MIME 타입과 인쇄 데이터 표현 클래스로 이루어진 "doc flavor"(클래스 DocFlavor)로 지정돼요. 일부 flavor는 모든 속성과 조합해서 지원되지 않을 수 있어요. getUnsupportedAttributes(..)로 특정 조합을 검증해요.
boolean isDocFlavorSupported(DocFlavor flavor)
이 인쇄 서비스가 특정 DocFlavor를 지원하는지 알아내요. 지원하면 true, 그렇지 않으면 false를 반환해요.
Class<?>[] getSupportedAttributeCategories()
이 인쇄 서비스에 대한 작업을 설정할 때 클라이언트가 지정할 수 있는 인쇄 속성 카테고리들을 알아내요. 지원되는 카테고리가 없으면 빈 배열을 반환해요.
boolean isAttributeCategorySupported(Class<? extends Attribute> category)
이 인쇄 서비스에 대한 작업을 설정할 때 클라이언트가 지정된 인쇄 속성 카테고리를 지정할 수 있는지 알아내요.
Object getDefaultAttributeValue(Class<? extends Attribute> category)
주어진 카테고리에서 이 인쇄 서비스의 기본 인쇄 속성 값을 알아내요. 클라이언트가 작업을 설정할 때 해당 카테고리의 속성 값을 지정하지 않으면 이 기본값이 사용돼요. 모든 속성에 기본값이 있는 건 아니에요.
Object getSupportedAttributeValues(Class<? extends Attribute> category,
DocFlavor flavor, AttributeSet attributes)
이 인쇄 서비스에 대한 작업을 설정할 때 주어진 카테고리에서 클라이언트가 지정할 수 있는 인쇄 속성 값들을 알아내요. 카테고리마다 지원 값의 표시 방식이 달라서 Object를 반환해요.
boolean isAttributeValueSupported(Attribute attrval,
DocFlavor flavor, AttributeSet attributes)
이 Print Service에 대한 작업을 설정할 때 클라이언트가 주어진 인쇄 속성 값을 지정할 수 있는지 알아내요.
AttributeSet getUnsupportedAttributes(DocFlavor flavor, AttributeSet attributes)
특정 DocFlavor 문맥에서 인쇄 요청에 지원되지 않는 속성들을 식별해요. 반환 값이 null이면 모든 속성이 지원되는 거예요. 반환 값이 null이 아니면 반환된 집합의 모든 속성이 이 DocFlavor로는 지원되지 않아요.
ServiceUIFactory getServiceUIFactory()
사용자가 여러 역할에서 서비스와 상호작용할 수 있게 하는 UI 컴포넌트의 팩토리를 반환해요. UI를 제공하지 않는 서비스는 null을 반환해요.
boolean equals(Object obj)
두 서비스가 같은 기본 서비스(underlying service)를 가리키는지 판단해요. 서비스 객체가 캡슐화하는 내부 구현은 참조 동일성을 보장하지 않을 수 있으므로, 클라이언트는 이 메서드로 같은 기본 서비스를 가리키는지 확인해야 해요. 비교하는 서비스 객체들을 클라이언트가 서로 바꿔 쓸 수 있을 때만 true를 반환해요.
int hashCode()
equals(Object)와 일관되게 구현해야 해요.