接口 | 描述 |
---|---|
Attribute |
接口属性是由任何和每一个打印属性类实现的基本接口,以指示该类表示一个打印属性。
|
AttributeSet |
接口attributeset指定一组打印属性界面。
|
DocAttribute |
接口是一个标记接口,docattribute打印属性类实现了显示属性表示一个文档设置。
|
DocAttributeSet |
接口docattributeset指定一组文档属性的接口,即
|
PrintJobAttribute |
printjobattribute是一个标记接口,打印属性类实现了显示属性描述一个打印作业的打印作业或其他一些特性的状态。
|
PrintJobAttributeSet |
接口printjobattributeset指定一套打印作业属性的接口,即
|
PrintRequestAttribute |
接口是一个标记接口,printrequestattribute打印属性类实现了显示属性表示要求打印作业设置。
|
PrintRequestAttributeSet |
接口PrintRequestAttributeSet指定一组打印请求属性的接口,即
|
PrintServiceAttribute |
接口是一个标记接口,printserviceattribute打印属性类实现了显示属性描述的打印服务和打印服务的其他一些特性的状态。
|
PrintServiceAttributeSet |
接口printserviceattributeset指定一套打印作业属性的接口,即
|
SupportedValuesAttribute |
接口是一个标记接口,supportedvaluesattribute打印属性类实现了显示属性描述了支持另一个属性的值。
|
类 | 描述 |
---|---|
AttributeSetUtilities |
attributesetutilities类提供静态方法操纵attributesets。
|
DateTimeSyntax |
datetimesyntax类是抽象基类提供的所有属性的值是一个日期和时间共同实施。
|
EnumSyntax |
enumsyntax类是抽象基类提供所有类型安全枚举”目标的共同实现。
|
HashAttributeSet |
类提供了一个
AttributeSet hashattributeset实现一个哈希映射特性。
|
HashDocAttributeSet |
类提供了一个属性集hashdocattributeset继承实现类
HashAttributeSet 并执行接口
DocAttributeSet 语义限制。
|
HashPrintJobAttributeSet |
类提供了一个属性集hashprintjobattributeset继承实现类
HashAttributeSet 并执行接口
PrintJobAttributeSet 语义限制。
|
HashPrintRequestAttributeSet |
hashprintrequestattributeset类继承实现类
HashAttributeSet 并执行接口
PrintRequestAttributeSet 语义限制。
|
HashPrintServiceAttributeSet |
类提供了一个属性集hashprintserviceattributeset继承实现类
HashAttributeSet 并执行接口
PrintServiceAttributeSet 语义限制。
|
IntegerSyntax |
integersyntax类是抽象基类提供的所有属性与整数的值共同实施。
|
ResolutionSyntax |
resolutionsyntax类是抽象基类提供的所有属性表示打印机分辨率共同实施。
|
SetOfIntegerSyntax |
setofintegersyntax类是抽象基类提供的所有属性的值是一个非负整数的共同实施。
|
Size2DSyntax |
size2dsyntax类是抽象基类提供的所有属性表示的大小在两个维度的共同实施。
|
TextSyntax |
textsyntax类是抽象基类提供的所有属性的值是一个字符串的常用实现。
|
URISyntax |
urisyntax类是抽象基类提供的所有属性的值是一个统一资源标识符(URI)共同实施。
|
异常 | 描述 |
---|---|
UnmodifiableSetException |
抛出表示因为设定是不可修改的无法执行所请求的操作。
|
打印数据和处理指令是独立的实体。这意味着:
处理指令不指定打印作业如何处理请求;每个处理指令只描述打印作业的结果的说明。打印作业确定其实现由处理指令指定的结果的方式。表示处理指令作为描述性项目提供了更多的灵活性,用于实现打印作业。
在java打印服务的API,一个属性类的实现Attribute接口的java类的代表。属性值是这样一个类的实例或它的子类的实例。例如,指定的份数,一个应用程序构建与所需份数的Copies类的一个实例并使用Copies
例如打印请求的一部分。在这种情况下,该Copies
类表示的属性类别,和Copies
实例表示的属性值。
一旦打印机开始打印作业处理,额外的关于这个工作的信息变得可用,其中可能包括:工作状态(如完整的或排队)和打印的页数为止。这些信息也属于属性。属性也可以描述打印机本身,如:打印机名称、打印机位置和队列的工作数等。
java打印服务API定义了不同种类的五个子的Attribute
属性:
DocAttribute
或整个打印作业作为一个
PrintRequestAttribute
。某些低级别的属性永远不会被使用在他们自己的,但总是聚集到更高级别的属性。这些低级的属性类只能实现接口
Attribute,没有任何标记的接口。
java打印服务API定义了一组标准属性类的蓝本,在互联网打印协议(IPP)1.1版本属性。标准属性类在分装javax.print.attribute.standard保持实际属性类的封装定义的通用设备从概念上把attribute。
的AttributeSet
界面类似于Map接口:它提供了一个Map的关键值,其中每个键都是独特的,不能包含多个值。然而,这AttributeSet
界面设计专门支持java的打印服务需求的API。一个AttributeSet
要求:
AttributeSet
每个按键对应一个类别,和关键的价值只能是一个属于的主要代表类别的属性值。因此,不同于Map
,一AttributeSet
制约的关键可能的值:一个属性不能设置为一个属性的值不属于这一类。Attribute
接口可以被添加到组。attribute包包括HashAttributeSet为属性设置界面的具体实现。HashAttributeSet
提供一个属性集基于哈希映射。你可以用这个实现或提供自己的接口实现AttributeSet
。
java打印服务API提供了四个专业的属性集被限制为只包含一个属性的四种,在Attribute Roles节讨论:
注意只有四种属性集是列在这里,但有五种属性。接口 SupportedValuesAttribute表示一种属性,一个属性给出了支持的值。支持的值属性是不会聚集成属性集,所以没有属性设置界面下定义为他们。在某些上下文中,属性集是只读的,这意味着客户端只允许检查一个属性集的内容,但不改变它们。在其他情况下,该属性设置为读写,这意味着客户端允许检查和改变一个属性集的内容。一个只读属性,调用一个变异操作引发UnmodifiableSetException
。
包,包括每一个attribute属性设置完成一个具体的实现:
Copies
,类和类
Sides,
PrinterResolution每个属性类的包装。一个或多个原始数据项包含该属性的值。属性集操作在添加属性时,在属性类别对象之间进行频繁的比较,在同一类别中查找现有的属性,并查找给定类别的属性。因为一个属性类是代表一个类,属性值可以比较快的
Class.equals
方法进行。
尽管java打印服务API包含了大量不同的属性类别,只有几个不同类型的属性值。大多数属性可以用少量的数据类型来表示,如:整数值、整数范围、文本或整数值的枚举等。一类接受的属性值的类型称为属性的抽象语法。提供一致性和减少重复代码,java打印服务API定义了抽象语法类来表示每个抽象语法,这些类作为标准属性的父母尽可能。抽象语法类是:
每个属性类实现Attribute
接口,直接或间接地将其标记为打印属性。属性类,可以出现在特定的上下文中限制属性集还实现了一个或多个接口的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
方法最终保证任何厂商定义的一个标准属性类的子类出现在同一范畴。每一个属性对象都是不可变的,一旦构造,使属性对象引用可以自由地传递。要获得不同的属性值,构造一个不同的属性对象。
EnumSyntax
抽象语法类指定所有可能的属性值在编译时为属性类的单实例。这意味着新的枚举值不能在运行时构建。为了定义一个标准枚举属性的新的供应商特定值,供应商必须定义一个新的属性类,指定新的单例实例。为了确保新的属性值属于同一类别中的标准属性值,新的属性类必须是标准属性类的子类。
定义一个新的属性类别,一个供应商定义一个新的属性类。这类的属性,如标准属性类,实现了Attribute
或它的一个子类继承一个抽象语法和。供应商可以使用现有的抽象语法类或定义一个新的。新的自定义属性可以用于任何一个Attribute
使用,如在AttributeSet
。
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引用参数的方法不正确,除非明确记录方法的有意义的解释。相反的用法是不正确的编码,并可能会导致运行时间的异常,无论是立即或在稍后的时间。时和时是典型的和可以接受的这种情况下运行时的异常实例。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.