浅谈 Java Printing

浅谈 Java  Printing

其实怎么说呢?在写这篇博文之前,我对java printing 可以说是一无所知的。以至于我在敲文字时,

基本上是看着api文档翻译过来的。这虽然看起来非常的吃力,但是我相信,有道大哥不会辜负我的。嘻

嘻!

Java Printing 技术,也就是我们平时所接触的打印,只不过是说可以用Java实现而已。

一、Java Printing 打印简介

Java Printing API能够使java应用程序实现相关的打印功能,如:

1、打印所有 Java 2D 和 AWT 图形,包括复合的图形图像。

2、控制文档(如word文档)组成功能,如:柔软整理、反序打印 和 小册子打印。

3、调用打印机特定的功能,如:双面打印装订

4、能在所有平台上进行打印,如:windows、Solaris(我想这也是Java具有跨平台的优点体现)

二、Java Printing 相关类和接口

1、接口

Printable :该接口由每一个页面 painter 实现,应用程序通过打印系统调用print方法,以呈现一个页面

Pageable :该接口由即将被答打印系统打印的文档(document)实现,通过该接口,系统能够知道文档的页面 及每页

即将以什么格式打印

PrinterGraphics :一个用来呈现页面的 painter  的Graphics2D 对象,需要实现该接口。同时,通过该接

口,还可以获得控制打印的PrinterJob对象。

2、类

Book :实现了Pageable接口,代表一个拥有不同页面格式和页面painter的文档,该类通过Pageable接

口和PrintJob进行交互。

PageFormat :描述了打印页面的大小(如:A4,A3)及打印方向

Paper :描述了每一张纸的物理特性

PrintJob :控制打印的主要类。应用调用PrintJob方法去启动一个任务,向用户展示打印框,并打印。

三、Java打印的相关概念

Java 打印是基于一个回调打印模型的。即当页面被打印时,由打印系统(非应用程序)控制。应用程

序只是提供打印文档的相关信息,而当打印系统需要呈现页面时,打印系统就会向应用程序索取。

.......

实现打印,需要做些什么?

一个应用程序向支持打印功能,有以下2点需要实现:

1、任务控制 ----- 初始化(启动)、管理打印任务

2、成像 ----- 当打印系统请求时,要能呈现一个页面

什么是任务控制?

在一个应用程序中,用户通常是通过点击一个按钮或者一个菜单来启动一个打印任务。当一个打印操作

被用户触发,应用程序就会创建一个 PrintJob 对象并用该对象管理打印进程。

应用程序 负责设置打印任务,向用户展示打印窗格并启动打印任务。

什么是成像?

当一个文档被打印时,当打印系统请求时,应用程序必须呈现每一页面。为了实现这个机制,应用程序

提供一个实现Printable接口的 page painter ,当打印系统需要呈现一个页面时,它就会调用 page painter

的print 方法。

当 page painter 的print 方法被调用时,该方法是通过传递一个图形上下文来呈现图像页面。该方法

同时也传递一个 PageFormat 对象来指定页面的几何布局 和 一个 整型数 来指定页面在打印任务中的下标,即页码。

打印系统支持Graphics和Graphics2D呈现。如果想打印 Graphics 2D形状,文本,图形等,可以在

print方法中将 Graphics 对象强制转换为 Graphics 2D 对象。

什么是Page Painter?

Page Painter 的主要任务就是通过 打印系统提供的 Graphics 上下文对象 去呈现每个页面。一个

Page Painter 实现Printable接口的print方法。

因为许多打印机无法打印整个页面的所有地方,顾print方法pageFormate 参数指定页面可以成像的区域。

时间: 2024-12-22 21:22:19

浅谈 Java Printing的相关文章

【转】浅谈Java中的equals和==

浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初

浅谈java异常[Exception]

本文转自:focusJ 一. 异常的定义 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常.绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败.之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意. 记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也

浅谈Java虚拟机

最近发现MDT推出去的系统的有不同问题,其问题就不说了,主要是策略权限被域继承了.比如我们手动安装的很多东东都是未配置壮态,推的就默认为安全壮态了,今天细找了一下,原来把这个关了就可以了. 浅谈Java虚拟机,布布扣,bubuko.com

浅谈Java中的对象和引用

浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: "按照通

浅谈Java中的equals和==

浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初

浅谈Java throw, throws, try catch异常处理

1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.如下面例子所示: public class Shoot {   创建类 static void pop() throws NegativeArraySizeException { //定义方法并抛出NegativeArraySizeException异常 int [] arr = new int[-3];//创建数组 } public

浅谈Java中的hashcode方法 - 海 子

浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现. 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法. 一.hashCode方法的作用 对于包含容器类型的程

浅谈Java中的对象和对象引用

浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: “按照通俗的说法,每个对象都是某个类(class)的一个实

浅谈Java中的深拷贝和浅拷贝

浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: [java] view plaincopyprint? int apples = 5; int pears = apples; int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float