JavaTM 2 Platform
Standard Ed. 6

javax.print
類別 DocFlavor

java.lang.Object
  繼承者 javax.print.DocFlavor
所有已實作的介面:
Serializable, Cloneable
直接已知子類別:
DocFlavor.BYTE_ARRAY, DocFlavor.CHAR_ARRAY, DocFlavor.INPUT_STREAM, DocFlavor.READER, DocFlavor.SERVICE_FORMATTED, DocFlavor.STRING, DocFlavor.URL

public class DocFlavor
extends Object
implements Serializable, Cloneable

類別 DocFlavor 封裝了一個物件,該物件指定提供給 DocPrintJob 的列印資料的格式。"Doc" 是一個簡短、易於發音的術語,指“部分列印資料”。列印資料格式,即 "doc flavor" 由兩方面的內容組成:

DocPrintJob 通過介面 Doc 獲得其列印資料。Doc 物件允許 DocPrintJob 來確定客戶端可以提供的 doc flavor。Doc 物件還允許 DocPrintJob 獲得一個 doc flavor 的表示形式類別的實例,然後 DocPrintJob 可從中獲得實際的列印資料。


客戶端格式化列印資料

有兩大類別的列印資料:客戶端格式的列印資料和服務格式的列印資料。

對於客戶端格式的列印資料,客戶端確定或知道該列印資料格式。例如,客戶端可能有 JPEG 編碼的圖像、HTML 程式碼的 URL 或以某種編碼形式包含純文本的磁碟檔案(可能從外部源獲得),並且需要某種方式向列印服務描述資料格式。

doc flavor 的表示形式類別是 JPS DocPrintJob 的一個管道,可從客戶端獲得字元或 byte 序列。doc flavor 的 MIME 型別是標準的媒體型別之一,通知如何解釋字元或 byte 序列。有關標準媒體型別的列表,請參閱 Internet 編號分派機構 (IANA) 的媒介型別目錄。介面 Doc 提供兩個實用操作:getReaderForTextgetStreamForBytes(),用來說明 Doc 物件的客戶端提取客戶端格式的列印資料。

對於客戶端格式化列印資料,列印資料表示形式類別通常是以下之一(雖然也允許使用其他表示形式類別):


預設編碼和平臺編碼

對於其 doc flavor 的 MIME 型別未包括 charset 參數的 byte 列印資料而言,Java 列印服務實例假定預設的字元集是 US-ASCII。這與 RFC 2046 保持一致,它宣告預設的字元集是 US-ASCII。注意,US-ASCII 是一個 UTF-8 子集,所以如果未來 RFC 以相容的方式將 UTF-8 作為預設值,則可能會擴大該字元集。

還要注意,當以文本資料的形式解釋 byte 串流時,這與 Java 運行時的行為有所不同。這假定了用於使用者語言環境的預設編碼。因此,當以本地編碼形式使用 Java 列印服務後台列印某個檔案時,正確指定編碼很重要。在英語語言環境中工作的開發人員應該特別注意這一點,因為其平臺編碼對應於預設的 mime 字元集。在這種純屬巧合的特定情況下,不指定平臺資料的編碼也可工作。

每個 Java 虛擬機器實例都具有在虛擬機器啟動期間所確定的預設字元編碼,並且該預設編碼通常取決於底層作業系統使用的語言環境和字元集。在分佈式環境中,不保證兩個 VM 共享同一預設編碼。因此,希望以串流的形式將平臺編碼文本資料從主機平臺發送到 Java 列印服務實例的客戶端,必須顯式地宣告字元集,而不能依賴於預設值。

首選的形式是正式的 IANA 編碼主名稱。以串流形式發送文本資料的應用程序應該始終在 mime 型別中指定字元集,這就需要為資料(如檔案,以該平臺的編碼形式存儲)獲得主機平臺的編碼形式。可從 DocFlavor.hostEncoding 獲得與此對應且適合以 DocFlavor 的 mime 型別所使用的 CharSet。這可能不會總是主 IANA 名稱,但是可保證是此 VM 所理解的 CharSet。對於公共的 flavor,可以使用預定義的 *HOST DocFlavor。

有關 Java 平臺所支持的字元編碼的更多資訊,請參閱字元編碼


推薦的 DocFlavor

Java Print Service API 未定義任何強制支持的 DocFlavor。但是,對於客戶端格式化列印資料,以下是 Java Print Service 實例可以支持的 MIME 型別的範例。類別 DocFlavor 內的巢狀類別為這些範例 doc flavor 宣告了預定義的靜態常數 DocFlavor 物件;可使用類別 DocFlavor 的建構子來創建任意的 doc flavor。