分享好友 天南地北首页 网站导航

什么是javax.print

网友 2023-09-08 14:56 · 头闻号教育培训

最佳答案:

javax.print包,是新发布的jdk1.4完善Java打印功能中的软件包之一,它对已有的打印功能是积极的补充。利用它,我们可以实现大部分实际应用需求,包括打印文字、图形、文件及打印预览等等。

详情介绍

javax.print包,是新发布的jdk1.4完善Java打印功能中的软件包之一,它对已有的打印功能是积极的补充。利用它,我们可以实现大部分实际应用需求,包括打印文字、图形、文件及打印预览等等。

javax.printjavax.print软件包介绍

在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java提供的打印功能一直都比较弱。实际上最初的jdk根本不支持打印,直到jdk1.1才引入了很轻量的打印支持。所以,在以前用Java/Applet/JSP/Servlet设计的程序中,较复杂的打印都是通过调用ActiveX/OCX控件或者VB/VC程序来实现的,非常麻烦。实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了一个健壮的打印模式的开端,该打印模式与Java2D图形包充分结合成一体。更令人鼓舞的是,新发布的jdk1.4则提供了一套完整的"Java 打印服务 API" (Java Print Service API)。Java的打印API主要存在于java.awt.print包中。而jdk1.4新增的类则主要存在于javax.print包及其相应的子包javax.print.event和javax.print.attribute中。其中javax.print包中主要包含打印服务的相关类,而javax.print.event则包含打印事件的相关定义,javax.print.attribute则包括打印服务的可用属性列表等。

javax.print软件包 javax.print 的描述

为 JavaTM Print Service API 提供了主要类和接口。Java Print Service API 允许客户端和服务器应用程序具

javax.print备如下功能

根据其性能发现并选择 PrintService。

指定打印数据的格式。

向支持所打印文档类型的服务提交 PrintJob。

javax.printPrintService 发现

应用程序可调用抽象类 PrintServiceLookup 的静态方法来查找 PrintService,这些 PrintService 具有满足应用程序打印要求的功能。例如,要打印双面文档,应用程序首先需要找到具有双面打印功能的打印机。

JDK 包括的 PrintServiceLookup 实现可查找标准的平台打印机。要查找其他类型的打印机(如 IPP 打印机或 JINI 打印机),PrintService 提供程序可写入 PrintServiceLookup 实现。PrintService 提供程序可使用《SPI JAR file specification》动态地安装这些 PrintServiceLookup 实现。

javax.print属性定义

javax.print.attribute 和javax.print.attribute.standard包定义了打印属性,这些属性描述了 PrintService 的功能、指定 PrintJob 的要求并跟踪 PrintJob 的进度。

javax.print.attribute 包描述了属性类型和属性分类方法。javax.print.attribute.standard 包枚举了 API 所支持的所有标准属性,其中大多数是在 IETF 规范《RFC 2911 Internet Printing Protocol, 1.1:Model and Semantics》(2000 年 9 月)中所指定的属性实现。javax.print.attribute.standard 中指定的属性包括常见的功能,如:分辨率、份数、介质大小、作业优先级和页面范围。

javax.print文档类型规范

DocFlavor 类表示了打印数据的格式,如 JPEG 或 Postscript。DocFlavor 对象由 MIME 类型(描述了格式)和文档表示形式类名(指示如何将文档发送到打印机或输出流)所组成。应用程序使用 DocFlavor 和属性集来查找某些打印机,这些打印机可打印由 DocFlavor 所指定的文档类型且具有属性集所指定的功能。

javax.print使用 API

典型的应用程序使用 Java Print Service API 执行以下步骤来处理打印请求:

选择一个 DocFlavor。

创建一个属性集。

找到一个可处理由 DocFlavor 和属性集所指定的打印请求的 PrintService。

创建一个 Doc 对象,该对象封装 DocFlavor 和实际的打印数据,这些打印数据可采用很多形式,包括:Postscript 文件、JPEG 图像、URL 或纯文本。

从 PrintService 获得一个由 DocPrintJob 表示的 PrintJob。

javax.print调用PrintJob的print方法

以下代码示例说明了 Java Print Service API 的典型用法:找到可在 A4 大小的纸张上打印 5 份 Postscript 文档双面副本的打印机、根据某个返回的 PrintService 创建 PrintJob 并调用 print 方法。

FileInputStream psStream;

try {

psStream = new FileInputStream("file.ps");

} catch (FileNotFoundException ffne) {

}

if (psStream == null) {

return;

}

DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTscript;

Doc myDoc = new SimpleDoc(psStream, 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.createPrintJob();

try {

job.print(myDoc, aset);

} catch (PrintException pe) {}

}

javax.print请注意

在 javax.print API 中,只有在方法中显式记录传递给方法的 null 引用参数具有有意义的解释时,该参数才是正确的。否则就是错误的编码方式,并且可能立即或在稍后某时导致运行时异常。IllegalArgumentException 和 NullPointerException 是典型的异常示例,并且是这种情况可接受的运行时异常。

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

收藏

点赞