DocFlavor

DocFlavor (문서 형식)

DocFlavor는 인쇄 데이터가 DocPrintJob에 제공되는 형식을 지정하는 객체를 캡슐화해요. "Doc"은 "한 조각의 인쇄 데이터"를 뜻하는 짧고 발음하기 쉬운 용어예요. 인쇄 데이터 형식("doc flavor")은 두 가지로 구성돼요.

출처: Java API Reference

본문

  • MIME 타입: 인쇄 데이터를 어떻게 해석할지 지정하는 MIME 미디어 타입(RFC 2045, RFC 2046에 정의)이에요. 텍스트 데이터의 charset은 IANA MIME-preferred 이름이거나, preferred 이름이 없으면 표준 이름이어야 해요.
  • 표현 클래스 이름: 실제 인쇄 데이터가 나오는 객체 클래스의 전체 자격 이름을 지정해요. Class.getName()이 반환하는 이름이에요. (따라서 byte[]의 클래스 이름은 "[B", char[]"[C"예요.)

DocPrintJobDoc 인터페이스로 인쇄 데이터를 얻어요. Doc 객체는 DocPrintJob이 클라이언트가 공급할 doc flavor를 결정하게 하고, doc flavor의 표현 클래스 인스턴스를 얻어 실제 인쇄 데이터를 가져오게 해요.

클라이언트 포맷 vs 서비스 포맷 인쇄 데이터

인쇄 데이터에는 클라이언트 포맷 인쇄 데이터와 서비스 포맷 인쇄 데이터의 두 광범위한 범주가 있어요.

클라이언트 포맷 인쇄 데이터에서는 클라이언트가 인쇄 데이터 형식을 결정하거나 알아요. 표현 클래스는 일반적으로 다음과 같아요.

  • 문자 배열(char[]): 배열 안의 유니코드 문자
  • String: 문자열 안의 유니코드 문자
  • 문자 스트림(java.io.Reader)
  • 바이트 배열(byte[]): doc flavor MIME 타입이 지정한 문자셋으로 인코딩된 바이트. 지정하지 않으면 기본은 US-ASCII
  • 바이트 스트림(java.io.InputStream)
  • URL: URL 위치에서 읽은 바이트. 표현 클래스가 URL이면 인쇄 서비스가 클라이언트를 거치지 않고 직접 다운로드해요.

서비스 포맷 인쇄 데이터에서는 Java 인쇄 서비스 인스턴스가 인쇄 데이터 형식을 결정해요. 표현 클래스는 RenderableImage, Printable, Pageable 같은 인터페이스를 나타내고, MIME 타입은 "application/x-java-jvm-local-objectref"라는 특수 값이에요.

생성자

public DocFlavor(String mimeType, String className)

주어진 MIME 타입과 표현 클래스 이름으로 새 doc flavor 객체를 만들어요. MIME 타입은 표준 형식으로 변환돼 저장돼요. mimeType이나 classNamenull이면 NullPointerException, mimeType이 MIME 미디어 타입 문자열 문법을 따르지 않으면 IllegalArgumentException이 발생해요.

메서드

  • getMimeType(): 표준 형식에 기반한 MIME 타입 문자열을 반환해요. 각 매개변수 값은 따옴표로 감싸져요.
  • getMediaType(): MIME 타입에서 미디어 타입을 반환해요.
  • getMediaSubtype(): MIME 타입에서 미디어 하위 타입을 반환해요.
  • getParameter(String paramName): MIME 매개변수를 나타내는 문자열을 반환해요. paramNamenull이면 NullPointerException, 매개변수가 없으면 null을 반환해요.
  • getRepresentationClassName(): 표현 클래스 이름을 반환해요.
  • toString(): 이 doc flavor를 문자열로 변환해요. 표준 형식 기반 MIME 타입 문자열과 "class=" 매개변수를 붙여 반환해요.
  • hashCode(): 해시 코드를 반환해요.
  • equals(Object obj): 주어진 객체와 같은지 판단해요. objnull이 아니고 DocFlavor 인스턴스이며, MIME 타입이 동등하고(같은 미디어 타입·하위 타입·매개변수) 표현 클래스 이름이 같으면 같아요. 다만 "text/plain""text/plain; charset=US-ASCII"는 같은 미디어 타입을 나타내도 같지 않다고 간주돼요.

중첩 클래스

DocFlavor에는 사전 정의된 doc flavor 상수를 제공하는 중첩 클래스들이 있어요: DocFlavor.BYTE_ARRAY, DocFlavor.CHAR_ARRAY, DocFlavor.INPUT_STREAM, DocFlavor.READER, DocFlavor.SERVICE_FORMATTED, DocFlavor.STRING, DocFlavor.URL.

필드

  • hostEncoding: 호스트 운영 체제 인코딩을 나타내는 문자열이에요.

더 알아보기