登录 (或注册)中文IBM
技
术
主
题
软
件下
载
社
区
技
术讲
座
Java 打印程序设计
文枫 (wenfb@sina.com), 深圳全通数码技术总监
简介: SUN 公司一直致力于 Java 打印功能的完善,而 Java2 平台则终于有了一个健壮的打印模式的开端,该打印模式与 Java2D 图形包充分
结合成一体。更令人鼓舞的是,新发布的 jdk1.4 则提供了一套完整的“Java 打印服务 API” (Java Print Service API),它对已有的打印功能是
积极的补充。利用它,我们可以实现大部分实际应用需求,包括打印文字、图形、文件及打印预览等等。本文将通过一个具体的程序实例来
说明如何设计 Java 打印程序以实现这些功能,并对不同版本的实现方法进行分析比较。希望大家能从中获取一些有益的提示。
发布日期: 2002 年 10 月 22 日
级别: 初级
访问情况:21389 次浏览
评论: 1 (查看 | 添加评论 - 登录)
平均分 (62个评分)
为本文评分
前言
在我们的实际工作中,经常需要实现打印功能。但由于历史原因,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 打印程序以实现这些功能,并对不同版本的实现方法进行分析比
较。希望大家能从中获取一些有益的提示。
Java 中的打印
2.1 Java 的打印 API
Java 的打印 API 主要存在于 java.awt.print 包中。而 jdk1.4 新增的类则主要存在于 javax.print 包及其相应的子包 javax.print.event 和
javax.print.attribute 中。其中 javax.print 包中主要包含打印服务的相关类,而 javax.print.event 则包含打印事件的相关定义,javax.print.attribute
则包括打印服务的可用属性列表等。
2.2 如何实现打印
要产生一个打印,至少需要考虑两条:
1. 需要一个打印服务对象。这可通过三种方式实现:在 jdk1.4 之前的版本,必须要实现 java.awt.print.Printable 接口或通过
Toolkit.getDefaultToolkit().getPrintJob 来获取打印服务对象;在 jdk1.4 中则还可以通过 javax.print.PrintSerivceLookup 来查找定位一个打
印服务对象。
2. 需要开始一个打印工作。这也有几种实现方法:在 jdk1.4 之前可以通过 java.awt.print.PrintJob(jdk1.1 提供的,现在已经很少用了)调
用 print 或 printAll 方法开始打印工作;也可以通过 java.awt.print.PrinterJob 的 printDialog 显示打印对话框,然后通过 print 方法开始打
印;在 jdk1.4 中则可以通过 javax.print.ServiceUI 的 printDialog 显示打印对话框,然后调用 print 方法开始一个打印工作。
2.3 打印机对话框
2.3.1 Printable 的打印对话框
开始打印工作之前,可以通过 PrinterJob.printDialog 来显示一个打印对话框。它给用户一个机会以选择应该打印的页码范围,并可供用户改
变打印设置。它是一个本地对话框。
页码,
1
/
8
Java
打印程序设计
2013/12/5 星期四
http://www.ibm.com/developerworks/cn/java/l
-
javaprint/