JavaTM Platform
Standard Ed. 6

패키지 javax.print.attribute

JavaTM Print Service 의 속성의 형태와 그것들이 속성 세트에 수집되는 방법을 기술하는 클래스와 인스턴스를 제공합니다.

참조처:
          설명

인터페이스의 개요
Attribute Attribute 인터페이스는, 클래스가 인쇄 속성을 나타내는 것을 나타내기 위해서(때문에), 임의 및 모든 인쇄 속성 클래스에 의해 구현되는 기본 인터페이스입니다.
AttributeSet AttributeSet 인터페이스는, 인쇄 속성 세트의 인터페이스를 지정합니다.
DocAttribute DocAttribute 인터페이스는, 속성이 문서의 설정을 표시하는 것을 나타내기 위해서(때문에), 인쇄 속성 클래스가 구현하는 태그 기능 인터페이스입니다.
DocAttributeSet DocAttributeSet 인터페이스는, 문서의 속성세트, 즉 DocAttribute 인터페이스를 구현하는 인쇄 속성에 대한 인터페이스를 지정합니다.
PrintJobAttribute PrintJobAttribute 는, 속성이 Print Job 상태 또는 Print Job 의 그 외의 특성을 기술하는 것을 나타내기 위해서(때문에), 인쇄 속성 클래스가 구현하는 태그 기능 인터페이스입니다.
PrintJobAttributeSet PrintJobAttributeSet 인터페이스는, 인쇄 작업 속성세트에 대한 인터페이스, 즉,PrintJobAttribute 인터페이스를 구현하는 인쇄 속성을 지정합니다.
PrintRequestAttribute PrintRequestAttribute 인터페이스는, 속성이 필요한 인쇄 작업의 설정을 표시하는 것을 나타내기 위해서(때문에), 인쇄 속성 클래스가 구현하는 태그 기능 인터페이스입니다.
PrintRequestAttributeSet PrintRequestAttributeSet 인터페이스는, 인쇄 요구 속성세트에 대한 인터페이스, 즉 PrintRequestAttribute 인터페이스를 구현하는 인쇄 속성을 지정합니다.
PrintServiceAttribute PrintServiceAttribute 인터페이스는, 속성이 Print Service 상태 또는 Print Service 의 그 외의 특성을 기술하는 것을 나타내기 위해서(때문에), 인쇄 속성 클래스가 구현하는 태그 기능 인터페이스입니다.
PrintServiceAttributeSet PrintServiceAttributeSet 인터페이스는, 인쇄 작업 속성세트에 대한 인터페이스, 즉,PrintServiceAttribute 인터페이스를 구현하는 인쇄 속성을 지정합니다.
SupportedValuesAttribute SupportedValuesAttribute 인터페이스는, 속성이 다른 속성으로 지원되는 값을 기술하는 것을 나타내기 위해서(때문에), 인쇄 속성 클래스가 구현하는 태그 기능 인터페이스입니다.
 

클래스의 개요
AttributeSetUtilities AttributeSetUtilities 클래스는, AttributeSets 를 조작하는 다음의 정적 메소드를 제공합니다.
DateTimeSyntax DateTimeSyntax 클래스는, 일자와 시각을 값으로 하는 모든 속성의 일반적인 구현을 실시하는 추상 base class입니다.
EnumSyntax EnumSyntax 클래스는, 모든 「형태 보증된 열거」객체의 일반적인 구현을 제공하는 추상 base class입니다.
HashAttributeSet HashAttributeSet 클래스는, 해시 맵의 특성을 가지는 AttributeSet 구현을 제공합니다.
HashDocAttributeSet HashDocAttributeSet 클래스는, 그 구현을 HashAttributeSet 클래스로부터 상속해,DocAttributeSet 인터페이스의 의미상의 제한을 적용하는 속성 세트를 제공합니다.
HashPrintJobAttributeSet HashPrintJobAttributeSet 클래스는, 그 구현을 HashAttributeSet 클래스로부터 상속해,PrintJobAttributeSet 인터페이스의 의미상의 제한을 적용하는 속성 세트를 제공합니다.
HashPrintRequestAttributeSet HashPrintRequestAttributeSet 클래스는, 그 구현을 HashAttributeSet 클래스로부터 상속해,PrintRequestAttributeSet 인터페이스의 의미상의 제한을 적용합니다.
HashPrintServiceAttributeSet HashPrintServiceAttributeSet 클래스는, 그 구현을 HashAttributeSet 클래스로부터 상속해,PrintServiceAttributeSet 인터페이스의 의미상의 제한을 적용하는 속성 세트를 제공합니다.
IntegerSyntax IntegerSyntax 클래스는, 정수치를 가지는 모든 속성의 일반적인 구현을 제공하는 추상 base class입니다.
ResolutionSyntax ResolutionSyntax 클래스는, 프린터의 해상도를 나타내는 모든 속성의 일반적인 구현을 제공하는 추상 base class입니다.
SetOfIntegerSyntax SetOfIntegerSyntax 클래스는, 부 이외의 정수치를 가지는 모든 속성의 일반적인 구현을 제공하는 추상 base class입니다.
Size2DSyntax Size2DSyntax 클래스는, 2 차원의 사이즈를 나타내는 모든 속성의 일반적인 구현을 제공하는 추상 base class입니다.
TextSyntax TextSyntax 클래스는, 값이 캐릭터 라인인 모든 속성의 일반적인 구현을 제공하는 추상 base class입니다.
URISyntax URISyntax 클래스는, 값이 URI (Uniform Resource Identifier)인 모든 속성의 일반적인 구현을 제공하는 추상 base class입니다.
 

예외의 개요
UnmodifiableSetException 이 세트를 변경할 수 없기 때문에 요구된 오퍼레이션을 실행할 수 없는 것을 나타내기 위해서(때문에) throw 됩니다.
 

패키지 javax.print.attribute 의 설명

JavaTM Print Service 의 속성의 형태와 그것들이 속성 세트에 수집되는 방법을 기술하는 클래스와 인스턴스를 제공합니다.

속성이란 무엇인가

인쇄 작업을 설정하는 경우, 클라이언트는 「인쇄 데이터」와「처리 명령」의 2 개를 지정합니다. 인쇄 데이터는, 인쇄되는 실제의 내용입니다. 처리 명령은, 사용하는 미디어의 종류, 인쇄하는 부수, 용지의 한 면에 인쇄하는지, 양면에 인쇄할까 등 인쇄 데이터의 인쇄 방법을 프린터에 지시합니다. 클라이언트는, Java Print Service API 의 속성의 정의에 의해 이러한 처리 명령을 지정합니다.

인쇄 데이터와 처리 명령은 별개의 엔티티입니다. 이것은 다음 일을 의미합니다.

처리 명령은, 인쇄 작업이 요구를 처리하는 방법을 지정하지 않습니다. 각 처리 명령은, 인쇄 작업의 결과의 설명만을 실시합니다. 인쇄 작업은, 처리 명령에 의해 지정된 결과를 실현하는 방법을 확정합니다. 처리 명령의 항목을 설명적으로 표현하는 것으로써, 인쇄 작업의 구현에 의해 많은 유연성을 얻을 수 있습니다.

속성의 카테고리와 값

각 프린터에는, 다양한 사이즈의 용지에 인쇄하는 기능이나 복수의 부수를 인쇄하는 기능 등, 몇개의 기능이 갖춰지고 있습니다. 각각의 기능에는 값의 범위가 있습니다. 예를 들어, 프린터의 인쇄 방향을 지정하는 기능에는, 값의 범위 [landscape, portrait] 가 있습니다. 인쇄 요구 마다, 기능에 대해서 이러한 값의 1 개가 설정됩니다. Java Print Service API 는 「속성 카테고리」라고 하는 용어를 사용해 프린터의 기능을 참조해, 「속성치」라고 하는 용어를 사용해 기능의 값을 참조합니다.

Java Print Service API 에서는, 속성 카테고리는,Attribute 인터페이스를 구현하는 Java 클래스에 의해 나타내집니다. 속성치는, 이러한 클래스 또는 그 서브 클래스의 1 개의 인스턴스입니다. 예를 들어, 인쇄 부수를 지정하기 위해서, 어플리케이션은 희망하는 인쇄 부수를 가지는 Copies 클래스의 인스턴스를 구축해, 인쇄 요구의 일부로서 이 Copies 인스턴스를 사용합니다. 이 경우,Copies 클래스는 속성 카테고리를 나타내,Copies 인스턴스는 속성치를 나타냅니다.

속성의 역할

인쇄 작업을 프린터에 송신할 경우에, 클라이언트는 문서의 이름 등 인쇄 데이터의 특성과 양면 인쇄로 부수 5 부 등 인쇄 데이터의 인쇄 방법을 설명하는 속성을 제공합니다. 인쇄 작업이 복수의 인쇄 데이터로부터 구성되는 경우, 최초의 문서는 8 x 11 인치의 미디어를 사용해, 하나 더의 문서는 11 x 17 인치의 미디어를 사용하는 등, 다른 인쇄 데이터는 다른 처리 명령을 가집니다.

프린터가 인쇄 작업의 처리를 개시하면(자), 작업에 관한 추가 정보가 사용 가능하게 됩니다. 이 정보에는, 「완료」또는 「대기」 등 작업 상태와 벌써 인쇄된 페이지수가 포함됩니다. 이러한 정보도 속성입니다. 속성은, 프린터명, 프린터의 위치, 및 대기하는 작업의 수 등 프린터 자체의 정보도 기술할 수 있습니다.

Java Print Service API 는 Attribute 의 5 개의 서브 인터페이스를 가지는 다른 종류의 속성을 정의합니다. 다음에 그것들을 설명합니다.

각 속성 클래스는, 이러한 태그 기능 서브 인터페이스의 1 개 또는 복수를 구현해, 속성이 API 목의 장소에서 사용되는지를 지정합니다. 각 속성 클래스가 복수의 태그 기능 서브 인터페이스를 구현하는 경우는, 속성을 복수의 문맥으로 사용할 수 있습니다. 예를 들어, 미디어 속성은,DocAttribute 로서 1 개의 인쇄 작업의 1 개의 문서에 적용하는 일도,PrintRequestAttribute 로서 인쇄 작업 전체에 적용할 수도 있습니다. 저레벨의 속성안에는, 단독으로 사용되지 않고, 항상 고레벨의 속성에 통합되는 것도 있습니다. 이러한 저레벨의 속성 클래스는,Attribute 인터페이스만을 구현해, 태그 기능 서브 인터페이스를 구현할 것은 없습니다.

Java Print Service API 는, Internet Printing Protocol (IPP) 버젼 1.1 의 속성에 모델화 되고 있는 표준 속성 클래스의 그룹을 정의합니다. 표준 속성 클래스는, 실제의 속성 클래스를 보관 유지하기 위해서, 패키지 javax.print.attribute 에 정의된 범용 기능과는 개념적으로 구별되는 서브 패키지 javax.print.attribute.standard 에 있습니다.

속성 세트

일반적으로, 클라이언트는, 인쇄 작업의 송신 시에 복수의 처리 명령을 제공할 필요가 있습니다. 예를 들어, 클라이언트는 A4 의 미디어 사이즈와 횡장의 인쇄 방향을 지정할 필요가 있습니다. 복수의 처리 명령을 송신하기 위해서, 클라이언트는 Java Print Service API 가 AttributeSet 인터페이스로 표현하는 속성 세트에 속성을 수집할 필요가 있습니다.

AttributeSet 인터페이스는,Map 인터페이스에 유사하고 있습니다. 이것은 값에 대한 키의 매핑을 제공합니다. 여기에서는, 각 키는 일의이며, 복수의 값을 보관 유지할 수 없습니다. 다만,AttributeSet 인터페이스는 Java Print Service API 의 요구를 지원하도록(듯이) 설계되고 있습니다. AttributeSet 에는, 다음이 필요하게 됩니다.

  1. AttributeSet 의 각 키는 카테고리에 대응해, 키의 값은 키에 의해 나타내지는 카테고리에 속하는 속성치의 1 개만을 취할 수가 있다. 이 때문에,Map 와 달리,AttributeSet 는 키의 사용 가능한 값을 제한한다. 즉, 속성 카테고리는 그 카테고리에 속하지 않는 속성치를 설정할 수 없다
  2. 같은 카테고리로부터의 2 개의 속성이 같은 세트에 존재할 수 없다. 예를 들어, 속성의 컬렉션은, 이것들 2 개의 속성이 프린터에 모순된 명령을 주기 (위해)때문에, 「한방향」속성과 「양방향」속성의 양쪽 모두를 보관 유지할 수 없다
  3. Attribute 인터페이스를 구현하는 속성만이 세트에 추가할 수 있다

javax.print.attribute 패키지에는, 속성 세트의 인터페이스의 구상 구현으로서 HashAttributeSet 가 포함됩니다. HashAttributeSet 는 해시 맵에 근거하는 속성 세트를 제공합니다. 이 구현을 사용하는지, 또는 AttributeSet 인터페이스의 독자적인 구현을 제공할 수가 있습니다.

Java Print Service API 는,「속성의 역할」섹션으로 설명되고 있는 대로,4 종류의 속성의 1 개만을 보관 유지하도록(듯이) 제한되고 있는 속성 세트의 다음의 4 개의 특수화를 제공합니다.

여기에서는 4 종류의 속성 세트만이 리스트 되고 있습니다만, 5 종류의 속성이 있는 것에 주의해 주세요. SupportedValuesAttribute 인터페이스는, 다른 속성으로 지원하는 값을 제공하는 속성을 표시합니다. 지원하는 값의 속성은 속성 세트에는 통합되지 않기 때문에, 이것들을 정의하는 속성 세트의 서브 인터페이스는 없습니다.

일부의 문맥에서는, 속성 세트는 읽어들여 전용의 경우가 있습니다만, 이것은 클라이언트가 속성 세트의 내용을 검사할 수 있지만 변경할 수 없는 것을 의미합니다. 다른 문맥에서는, 속성 세트가 읽어들여, 기입 가능의 경우가 있습니다만, 이것은 클라이언트가 속성 세트의 내용의 검사라고 변경의 양쪽 모두를 실시할 수가 있는 것을 의미합니다. read 전용의 속성 세트의 경우, 변경 조작을 호출하면(자),UnmodifiableSetException 가 throw 됩니다.

javax.print.attribute 패키지에는, 다음의 각 속성 세트의 서브 인터페이스의 구상 구현의 1 개가 포함됩니다.

이러한 클래스의 모든 것은,HashAttributeSet 를 확장해, 속성 세트가 대응하는 종류의 속성을 보관 유지하는 것만이 가능하게 되는 제한을 적용합니다.

속성 클래스의 설계

속성치는, 정수치 또는 열거치 등 작은 불가분인 데이터 항목입니다. Java Print Service API 는, 속성치를 나타내기 위해서(때문에) int 등 기본 데이터형을 사용하지 않습니다. 그 이유는 다음과 같습니다. 형태 보증과 모든 속성을 균등하게 나타내기 위해서(때문에), Java Print Service API 는 각 속성 카테고리를 Copies 클래스,Sides 클래스, 및 PrinterResolution 클래스등의 클래스로서 정의합니다. 각 속성 클래스는, 속성의 값을 보관 유지하는 1 개(살) 이상의 기본 데이터 항목을 랩 합니다. 속성 세트의 조작은, 속성을 추가할 때, 같은 카테고리내에 기존의 속성을 검출할 때, 및 그 카테고리에 부여된 속성을 검색할 경우에, 빈번하게 속성 카테고리의 객체간의 비교를 실시합니다. 속성 카테고리는 클래스에 의해 나타내지므로, 속성치의 빠른 비교는 Class.equals 메소드에 의해 실시할 수 있습니다.

Java Print Service API 에는 다수의 속성 카테고리가 포함됩니다만, 속성치가 다른 형태는 아주 조금 밖에 없습니다. 대부분의 속성은, 정수치, 정수형의 범위, 텍스트, 정수치의 열거 등 소수의 데이터형에 의해 나타낼 수 있습니다. 카테고리가 받아들이는 속성치의 형태는, 속성의 추상 구문으로 불립니다. 일관성을 제공해, 코드의 중복을 줄이기 위해서(때문에), Java Print Service API 는 추상 구문 클래스를 정의해 각 추상 구문을 나타내, 가능한 경우에는, 이러한 클래스는 표준 속성의 부모로 하고 있고 개에서도 사용할 수 있습니다. 추상 구문 클래스는 다음과 같습니다.

추상 구문 클래스는, 그것을 사용하는 속성에 의존하지 않습니다. 실제, 인쇄를 아무것도 실시하지 않는 어플리케이션은, 추상 구문 클래스를 사용할 수 있습니다. 대부분의 표준 추상 클래스는, 추상 구문 클래스의 1 개를 확장하고 있습니다만, 속성 클래스는 이러한 클래스의 1 개의 확장도 요구되지 않습니다. 추상 구문 클래스는, 많은 속성 클래스에 의해 공유되는 간이 구현을 단지 제공할 뿐입니다.

각 속성 클래스는, 직접적 또는 간접적으로 Attribute 인터페이스를 구현해, 그것을 인쇄 속성으로서 마크 합니다. 또, 특정의 문맥으로, 제한된 속성 세트에 표시되는 속성 클래스는, 1 개(살) 이상의 Attribute 의 서브 인터페이스를 구현합니다. 또, 대부분의 속성 클래스는, 적절한 추상 구문 클래스를 확장해 구현을 가져옵니다. Sides 속성 클래스를 다음과 같이 생각해 주세요.

public class Sides extends EnumSyntax implements DocAttribute, PrintRequestAttribute, PrintJobAttribute { public final Object getCategory() { return Sides.class; } ... }

모든 속성 클래스는 Attribute 를 구현하므로, 모든 속성 클래스는, 속성 카테고리를 돌려주는 getCategory 메소드의 구현을 제공할 필요가 있습니다. Sides 의 경우,getCategory 메소드는 Sides.class 를 돌려줍니다. getCategory 메소드는, 최종적으로 표준 속성 클래스의 임의의 벤더 정의 서브 클래스가 같은 카테고리에 표시되도록(듯이) 합니다. 모든 속성 객체는 일단 구축되면(자) 불변이며, 이 때문에 속성 객체의 참조를 자유롭게 건네줄 수가 있습니다. 다른 속성치를 가져오려면 , 다른 속성 객체를 구축해 주세요.

벤더의 속성

Java Print Service API 는, 벤더가 다음을 실행할 수 있도록(듯이) 설계되고 있습니다. 속성의 새로운 값을 정의하는 경우는, 클라이언트로 임의의 값을 가지는 속성의 인스턴스를 실행시에 구축할 수 있습니다. 다만,EnumSyntax 의 추상 구문 클래스를 사용하는 열거 속성은, 컴파일시에 사용 가능한 모든 속성치를, 속성 클래스의 단독 인스턴스로서 지정합니다. 이것은, 새로운 열거치를 실행시에 구축할 수 없는 것을 의미합니다. 표준 열거 속성에 대해 다 고유의 새로운 값을 정의하는 경우, 벤더는 새로운 단독 인스턴스를 지정하는 새로운 속성 클래스를 정의할 필요가 있습니다. 새로운 속성치가 표준 속성치와 같은 카테고리안에 들어오도록(듯이) 하려면 , 새로운 속성 클래스를 표준 속성 클래스의 서브 클래스로 하지 않으면 안됩니다.

새로운 속성 카테고리를 정의하는 경우, 벤더는 새로운 속성 클래스를 정의합니다. 이 속성 클래스는, 표준 속성 클래스와 같이,Attribute 또는 그 서브 인터페이스의 1 개를 구현해, 추상 구문 클래스를 확장합니다. 벤더는 기존의 추상 구문 클래스를 사용하는 일도, 새로운 추상 구문 클래스를 정의할 수도 있습니다. 벤더가 정의한 새로운 속성은,AttributeSet 등이 같은 Attribute 가 사용되는 곳은 어디에서라도 사용할 수 있습니다.

속성의 사용

일반적인 인쇄 어플리케이션에서는, 인쇄 요구 속성은 일반적으로 클라이언트가 지정하는 속성형이기 (위해)때문에,PrintRequestAttributeSet 를 사용합니다. 다음의 예는, 인쇄 요구 속성의 속성 세트를 작성해, 지정된 속성에 의해 문서를 인쇄할 수 있는 프린터의 검출을 나타내고 있습니다.

FileInputStream psStream; try { psstream = new FileInputStream("file.ps"); } catch (FileNotFoundException ffne) { } if (psstream == null) { return; } //Set the document type. See the DocFlavor documentation for //more information. DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT; Doc myDoc = new SimpleDoc(pstream, psInFormat, null); PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(new Copies(5)); aset.add(MediaSize.A4); aset.add(Sides.DUPLEX); PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset); if (services.length > 0) { DocPrintJob job = services[0]. createPrintJob(); try { job.print(myDoc, aset); } catch (PrintException pe) {} }

주:javax.print API 에서는, 메소드에의 null 참조 파라미터 지정은, 문서에 의미가 명기되어 있는 경우를 제외해 부정한 것으로 주의해 주세요. 이것에 반하는 사용은 무효인 코딩이며, 곧바로 또는 나중에 실행시의 예외가 발생하는 결과가 됩니다. IllegalArgumentException 및 NullPointerException 는, 이러한 경우의 전형적이어 허용 할 수 있는 실행시의 예외의 사례입니다.

도입된 버젼:
1.4

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.