标题：javax.print.attribute.standard
简介
软件包 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