预定义的 doc flavor
无需 java 打印服务支持以下打印
数据格式和打印数据表示形式
类。实际上,使用此类的
开发人员不应该假定特定的打印服务支持与这些预定义的 doc flavor 相对应的
文档类型。应该始终
查询打印服务来确定该服务支持的 doc flavor。但是鼓励那些具有支持这些 doc flavor 的打印服务的开发人员
引用此处预定义的一个
实例。
根据实现的选择,除了上述强制要求的以外,还允许 java print service 实例支持任意其他 doc flavor(或一个都不支持)。
支持上述 doc flavor 是很值得的,这样进行打印的客户端可以依赖于是否能够在任意 jps 打印机上进行打印,而不管该打印机支持哪些 doc flavor。如果打印机不支持客户端的首选 doc flavor,则客户端至少可以打印纯文本,或者客户端可以将其数据转换为 renderable 图像并打印该图像。
另外,为了处理纯文本打印数据,每个 java print service 实例必须满足这些要求:
-
字符对回车-换行 (cr-lf) 意味着“转到下一行的第 1 列”。
-
单个回车 (cr) 字符本身意味着“转到下一行的第 1 列”。
-
单个换行 (lf) 字符本身意味着“转到下一行的列第 1 列”。
-
客户端本身必须执行不满足上述要求的所有纯文本打印数据的格式化工作。
javax.print.data 包中的类 docflavor 与类 dataflavor
相似。在 java 打印服务 (jps) api 中不使用类 dataflavor
的原因有三个,这些原因的根源都在于允许其他打印服务 api 共享 jps api,而这些打印服务 api 可能需要在 java 配置文件上运行,但不包括 java 平台、standard edition 的配置文件。
-
jps api 设计用于不支持 awt 的 java 配置文件中。
-
类
java.awt.datatransfer.dataflavor
的实现不保证等效的 dataflavor 具有相同的序列化表示形式。docflavor 确实并且可以用于需要此内容的服务中。
-
类
java.awt.datatransfer.dataflavor
的实现包括可读的名称,该名称作为序列化表示形式的一部分。该名称作为服务匹配约束的一部分是不合适的。
类 docflavor 的序列化表示形式使用以下 mime 类型字符串的规范形式。因此,mime 类型不同但等效(具有相同的规范形式)的两个 doc flavor 可认为是相等的。
- 保留媒体类型、媒体子类型和参数,但是丢弃所有注释和空白字符。
- 媒体类型、媒体子类型和参数名都转换为小写。
- 参数值保留其原始状况,但将文本媒体类型的 charset 参数值转换为小写。
- 移除参数值两侧的引号字符。
- 移除参数值内的引用反斜线字符。
- 按参数名的升序顺序排列各个参数。
类 docflavor 的序列化表示形式还包含表示形式类的完全限定类名,而不是表示形式类本身(一个 class 对象)。这就允许客户端在不必加载表示形式类的情况下,就可以检查 java print service 实例支持的 doc flavor,否则这对于资源有限的客户端来说是个问题。
- 另请参见:
- 序列化表格