`
- 浏览:
1084647 次
- 性别:
- 来自:
北京
-
前言
在我们的实际工作中,经常需要实现打印功能。但由于历史原因,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中的打印
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、如何实现打印
要产生一个打印,至少需要考虑两条:
需要一个打印服务对象。这可通过三种方式实现:在jdk1.4之前的版本,必须要实现java.awt.print.Printable接口或通过Toolkit.getDefaultToolkit().getPrintJob来获取打印服务对象;在jdk1.4中则可以通过javax.print.PrintSerivceLookup来查找定位一个打印服务对象。
需要开始一个打印工作。这也有几种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob(jdk1.1提供的,现在已经很少用了)调用print或printAll方法开始打印工作;也可以通过java.awt.print.PrinterJob的printDialog显示打印对话框,然后通过print方法开始打印;在jdk1.4中则可以通过javax.print.ServiceUI的printDialog显示打印对话框,然后调用print方法开始一个打印工作。
3、打印机对话框
3.1 Printable的打印对话框
开始打印工作之前,可以通过PrinterJob.printDialog来显示一个打印对话框。它给用户一个机会以选择应该打印的页码范围,并可供用户改变打印设置。它是一个本地对话框。
事实上,当从一个Printable对象进行一个打印工作时,打印对象并不知道需要打印多少页。它只是不停地调用print方法。只要print方法返回Printable.PAGE_EXISTS值,打印工作就不停地产生打印页,直到print方法返回Printable.NO_SUCH_PAGE时,打印工作才停止。
由于打印工作只有在打印完成后才进行准确的页数计算,所以在对话框上的页码范围是尚未初始化的[1,9999]。我们可以通过构建一个java.awt.print.Book对象传递给打印对象;也可以通过指定的格式计算需要打印的页数并传递给打印对象,使其准确地知道要打印多少页。
3.2 ServiceUI的打印对话框
与Printable的对话框不同的是,在jdk1.4提供ServiceUI的打印机对话框的缺省行为已经用新的 API 更改了:缺省情况下对话框不显示。我们必须使用ServiceUI类调用printDialog方法创建如下所示的打印对话框。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Java打印程序设计全攻略-4.doc,还有Java打印程序设计全攻略-1.doc,Java打印程序设计全攻略-2.doc,Java打印程序设计全攻略-3.doc,Java打印程序设计全攻略-5.doc
Java打印程序设计全攻略-3.doc,还有Java打印程序设计全攻略-1.doc,Java打印程序设计全攻略-2.doc,Java打印程序设计全攻略-4.doc,Java打印程序设计全攻略-5.doc
Java打印程序设计全攻略-打印预览,包括:Java的打印API 、如何实现打印 、打印机对话框。。。比较齐全,可以参考
2022年Java打印程序设计全攻略Java教程.docx
java 打印程序 设计 java 打印程序 设计 java 打印程序 设计 java 打印程序 设计 java 打印程序 设计 java 打印程序 设计 java 打印程序 设计 java 打印程序 设计 java 打印程序 设计 java 打印程序 设计
Java Web程序设计教程 Java Web程序设计教程
感想,加详细的打印设计及代码。希望大家喜欢
所以,在以前用Java/Applet/JSP/Servlet设计的程序中,较复杂的打印都是通过调用ActiveX/OCX控件或者VB/VC程序来实现的,非常麻烦。实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了一个健壮...
全国计算机等级考试-二级教程-Java语言程序设计(打印版),
Java打印程序设计.pdf
该资源是清华大学出版社出版的《JAVA语言程序设计》一书中的所有例题。
习题集内容覆盖面广,包括:Java言的基本常识、基本语法、面向对象的基本概念、数组、字符串、异常处理、文件和数据流、图形用户界面设计、小应用程序、线程、编程规范、网络程序设计、多媒体民图形学程序设计以及...
java语言程序设计提高篇
java分布式程序设计 java分布式程序设计 java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计
目录第1章 Java语言基础知识 1.1 Java语言与面向对象的程序设计 1.1.1 面向对象的程序设计思想 1.1.2 Java语言的特点 1.1.3 Java类库 1.2 Java程序概述 1.2.1 Java开发环境 1.2.2 Application举例 1.2.3 ...
Java语言程序设计.进阶篇.原书第10版.pdf java语言程序设计 进阶篇 本书是Java语言的经典教材 Java语言程序设计 进阶篇 原书第10篇版 正版内容下载,超高清,下载的亲们多多好评哦!