java中的打印

收集网址:
2.1 Java的打印API
Java的打印API主要存在于java.awt.print包中 。而jdk1.4新增的类则主要存在于javax.print包及其相应的子包javax.print.event和javax.print.中 。其中javax.print包中主要包含打印服务的相关类,而javax.print.event则包含打印事件的相关定义,javax.print.则包括打印服务的可用属性列表等 。2.2 如何实现打印
要产生一个打印,至少需要考虑两条:需要一个打印服务对象 。这可通过三种方式实现:在jdk1.4之前的版本,必须要实现java.awt.print.接口或通过.().来获取打印服务对象;在jdk1.4中则还可以通过javax.print.来查找定位一个打印服务对象 。
需要开始一个打印工作 。这也有几种实现方法:在jdk1.4之前可以通过java.awt.print.(jdk1.1提供的,现在已经很少用了)调用print或方法开始打印工作;也可以通过java.awt.print.的显示打印对话框,然后通过print方法开始打印;在jdk1.4中则可以通过javax.print.的显示打印对话框,然后调用print方法开始一个打印工作 。
2.3 打印机对话框
2.3.1 的打印对话框
开始打印工作之前,可以通过.来显示一个打印对话框 。它给用户一个机会以选择应该打印的页码范围,并可供用户改变打印设置 。它是一个本地对话框 。
事实上,当从一个对象进行一个打印工作时,打印对象并不知道需要打印多少页 。它只是不停地调用print方法 。只要print方法返回.值,打印工作就不停地产生打印页,直到print方法返回.时,打印工作才停止 。
由于打印工作只有在打印完成后才进行准确的页数计算,所以在对话框上的页码范围是尚未初始化的[1,9999] 。我们可以通过构建一个java.awt.print.Book对象传递给打印对象;也可以通过指定的格式计算需要打印的页数并传递给打印对象,使其准确地知道要打印多少页 。
2.3.2 的打印对话框
与的对话框不同的是,在jdk1.4提供的打印机对话框的缺省行为已经用新的 API 更改了:缺省情况下对话框不显示 。我们必须使用类调用方法创建如下所示的打印对话框 。

java中的打印

文章插图
回页首
Java打印程序设计实例
3.1 打印文本
3.1.1 应用场景
假设我们需要打印一个窗体的某个文本编辑域(可能只有几行,也可能包含多页)的内容,并且每页最多打印54行,如何实现呢?
3.1.2 解决方法
基本思路如下:首先我们需要实现接口,然后按照每页最多54行的格式计算共需要打印多少页,当打印文本的按钮被点击时,执行相应的打印动作 。打印文本的具体操作可通过的方法来实现 。
1、实现接口
/*指明打印的图形环境;指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米 。A4纸大致为595×842点);page指明页号*/ int print( g,pf, int page){g2 = ()g; g2.(Color.black); //设置打印颜色为黑色 if (page >= PAGES) //当打印页号大于需要打印的总页数时,打印工作结束.; g2.(pf.(), pf.());//转换坐标,确定打印边界 (g2, pf, page); //打印当前页文本 .; //存在打印页时,继续打印工作} /*打印指定页号的具体文本内容*/void ( g2,pf, int page) {s = ()[page];//获取当前页的待打印文本内容 //获取默认字体及相应的尺寸= g2.(); Font f = area.();; float= 16; //给定字符点阵 int k, i = f.(), lines = 0; while(s.() > 0 && lines < 54) //每页限定在54行以内 { k = s.('\n'); //获取每一个回车符的位置 if (k != -1) //存在回车符 { lines += 1; //计算行数= s.(0, k); //获取每一行文本 g2.(, 0, ); //具体打印每一行文本,同时走纸移位 if (s.(k + 1).() > 0) { s = s.(k + 1); //截取尚未打印的文本+= i;} } else //不存在回车符 { lines += 1; //计算行数= s; //获取每一行文本 g2.(, 0, ); //具体打印每一行文本,同时走纸移位 s = ""; //文本已结束 } } } /*将打印目标文本按页存放为字符串数组*/[] ( s) { []= new [PAGES];//根据页数初始化数组 for (int i = 0; i