簡介,屬性組織,
簡介
軟體包 javax.print.attribute.standard 的描述
包 javax.print.attribute.standard 包括特定列印屬性的類。父包 javax.print.attribute 提供了描述 Java Print Service 屬性的類型以及如何分類這些屬性的類和接口。
屬性表示列印服務可以提供的列印功能。對於每種屬性,列印服務要么支持該屬性,要么不支持該屬性。對於受支持屬性的每個可能值,列印服務要么支持該值,要么不支持該值。
API 需要每種列印服務都支持某些屬性;其他屬性是可選的,並且服務可以選擇是否支持它們。每種屬性都有一組它可接受的值。API 需要每種列印服務都支持某些屬性的某些值;其他屬性值是可選的,並且服務可以選擇是否支持它們。這些支持要求記錄在每個屬性類的文檔中。
包 javax.print.attribute.standard 包含廣泛套用於列印域的標準列印屬性和標準列印屬性值。除了標準列印屬性,列印服務供應商還可以提供特定於供應商的新列印屬性。供應商還可以提供標準列印屬性的特定於供應商的擴展(子類) -- 例如,為現有的標準屬性提供其他特定於供應商的值。當然,如果某個供應商希望客戶端能夠使用任何添加或擴展的屬性,則該供應商必須公布新的屬性類。
許多標準屬性類都擴展了 javax.print.attribute 包的某個抽象語法類。這些抽象語法類分別表示不同的類型。例如,EnumSyntax 類表示類型安全的枚舉。抽象語法類為屬性值提供了包裝器。
如果某個屬性類擴展 EnumSyntax,並且該屬性的值是 IPP 可兼容的值,則該屬性的 toString 方法將返回屬性值的 IPP 字元串表示形式,例如,JobState 屬性的字元串表示形式 "processing-stopped"。不過,由於 EnumSyntax 類是可擴展的,所以供應商可以定義其自己的屬性值。如果屬性使用 EnumSyntax 類並且被設定為某個供應商定義的值,則 toString 方法將不會返回該值的 IPP 字元串表示形式。
列印客戶端應用程式一般不需要使用包 javax.print.attribute.standard 中的全部列印屬性類,只需要與該應用程式相關的那些列印屬性類。
包 javax.print.attribute.standard 中的屬性類基於發表於 2000 年 9 月的 RFC 文檔《RFC 2911 Internet Printing Protocol/1.1:Model and Semantics》中定義的 Internet Printing Protocol (IPP) 屬性。有關更多信息,請參閱《RFC 2911》。各種屬性類的描述性文本大部分摘自於上述文檔。感謝上述作者對 API 所做的貢獻。
屬性組織
有以下五種列印屬性:doc 屬性、print request 屬性、print job 屬性、print service 屬性和 supported-values 屬性。
Doc 屬性
Doc 屬性指定了每個 doc 的特徵和套用於每個 doc 的列印作業設定。doc 屬性類實現了接口 DocAttribute。doc 屬性可以出現在 DocAttributeSet 中。
Print Request 屬性
Print request 屬性指定了將套用於整個列印作業和列印作業中所有 doc 的設定。print request 屬性類實現了接口 PrintRequestAttribute。print request 屬性可以出現在 PrintRequestAttributeSet 中。
有些屬性是 doc 屬性,但卻不是 print request 屬性,並且只能在 doc 級指定。有些屬性是 print request 屬性,但卻不是 doc 屬性,並且只能在 Print Request 級指定。有些屬性既是 doc 屬性又是 print request 屬性,並且可以在 doc 級或 Print Request 級指定。
當在 doc 級指定時,屬性僅套用於該級中的一個 doc。當在 Print Request 級指定時,屬性則套用於整個作業,其中包括該作業中的所有 doc。但是,在 doc 級指定的屬性會覆蓋在 Print Request 級指定的同一類別中的屬性。
Print Job 屬性
Print job 屬性報告“列印作業”的狀態。print job 屬性類實現了接口 PrintJobAttribute。print job 屬性可以出現在 PrintJobAttributeSet 中。
有些屬性既是 print request 屬性又是 print job 屬性;客戶端可以將這些屬性包括在 Print Request 中以指定確定出現的 PrintJob 的特徵,並且這些屬性還可以出現在該 PrintJob 的屬性集中。有些屬性是 print job 屬性,但卻不是 print request 屬性;列印服務本身可以將這些屬性添加到 PrintJob 的屬性集中。
Print Service 屬性
Print service 屬性報告列印服務的狀態。print service 屬性類實現了接口 PrintServiceAttribute。print service 屬性可以出現在 PrintServiceAttributeSet 中。
Supported-Values 屬性
supported-value 屬性指示列印服務支持的另一個屬性的合法值。supported-values 屬性類實現了接口 SupportedValuesAttribute。但是 supported-values 屬性從不會出現在屬性集中,所以它們沒有受限制的 AttributeSet 子接口。
屬性表
下表列出了所有列印屬性。該表顯示了除接口 Attribute 之外每個屬性類實現的標記接口,因此指示每種屬性在 API 中的使用方式。對於每個 doc 屬性和 print request 屬性,標記為 "SupportedValuesAttribute" 的這一列列出了 supported-values 屬性類(如果有),使用它列印服務可以指示該屬性類別所支持的值。
屬性類 Doc
屬性 Print
Request
屬性 Print
Job
屬性 Print
Service
屬性 SupportedValuesAttribute
Compression X
DocumentName X
Chromaticity X X X
Copies X X CopiesSupported
Finishings X X X
JobHoldUntil X X
JobImpressions X X JobImpressionsSupported
JobKOctets X X JobKOctetsSupported
JobMediaSheets X X JobMediaSheetsSupported
JobName X X
JobPriority X X JobPrioritySupported
JobSheets X X
Media X X X
MediaSize
MultipleDocumentHandling X X
NumberUp X X X NumberUpSupported
OrientationRequested X X X
PageRanges X X X
PresentationDirection X X X
PrinterResolution X X X
PrintQuality X X X
RequestingUserName X X
SheetCollate X X X
Sides X X X
DateTimeAtCompleted X
DateTimeAtCreation X
DateTimeAtProcessing X
JobImpressionsCompleted X
JobKOctetsProcessed X
JobMediaSheetsCompleted X
JobMessageFromOperator X
JobOriginatingUserName X
JobState X
JobStateReasons
包含零或更多 -- X
-- JobStateReason
NumberOfDocuments X
NumberOfInterveningJobs X
OutputDeviceAssigned X
ColorSupported X
PagesPerMinute X
PagesPerMinuteColor X
PDLOverrideSupported X
PrinterIsAcceptingJobs X
PrinterInfo X
PrinterLocation X
PrinterMessageFromOperator X
PrinterMakeAndModel X
PrinterMoreInfo X
PrinterMoreInfoManufacturer X
PrinterName X
PrinterState X
PrinterStateReasons
包含零或更多 -- X
-- PrinterStateReason
-- Severity
QueuedJobCount X
ReferenceUriSchemesSupported
請注意:在 javax.print API 中,只有方法中顯式地記錄 null 引用具有有意義的解釋時,方法的 null 引用參數才是正確的。否則使用 null 引用參數是錯誤的編碼,並且可能會導致立即或稍後出現運行時異常。IllegalArgumentException 和 NullPointerException 是此類情形下典型和可接受的運行時異常示例。
從以下版本開始:
1.4