java打印字符串_Java 打印字符串

打印工作常包含两部分:

* 作业控制——创建一个打印作业,将它连接到打印机,指定打印的副本数,用户打印对话交互。

* 页面成像——将内容绘制到页面,并管理超出页面的内容。

首先,创建一个打印任务。这个类代表了一个打印任务,大部分相关的类都位于java.awt.print包中。import java.awt.print.*;

PrinterJob job = PrinterJob.getPrinterJob();

接着,提供代码实现Printable接口将内容呈递给页面。

class HelloWorldPrinter implements Printable {…}

……

job.setPrintable(new HelloWorldPrinter());

一个应用程序通常会显示一个打印对话框,用户可以通过它改变各种选项,例如:设置打印副本数目,页面方向,或者目标打印机。

boolean doPrint = job.printDialog();

这个对话框一直显示直到用户批准打印或者取消打印。如果用户给出命令去继续打印,变量doPrint将会为true。如果用户取消了打印,doPrint为false。因为显示这个对话框完全是可选的,所以返回值纯粹是提供信息的。

如果doPrint变量为true,程序将通过调用PrinterJob.print方法来让作业执行打印请求。

if (doPrint) {

try {

job.print();

} catch (PrinterException e) {

/* The job did not successfully complete */

}

}

如果在将作业传递给打印机过程中出现问题时,PrinterException将被抛出。然而,因为PrinterJob.print方法在将作业传递给打印机后立即返回,所以用户的程序无法检测到夹纸或缺纸这些问题。这个打印作业控制样本对基本的打印用户已经足够了。

Printable接口只有一个方法:

public int print(Graphics graphics, PageFormat pf, int page) throws PrinterException;

PageFormat类描述了页面的定位信息、它的尺寸以及每英尺可绘制的区域(单位1/72nd)。可绘制区解释了大多数打印机的边界限制(硬件边界)。可绘区是位于这些边界之内的区域,实际应用中,经常为留出页眉和页脚而进一步限制这些边界。

page参数是一个从0开始的页面编号。

下面的代码展示了完整的Printable接口实现:

import java.awt.print.*;

import java.awt.*;

public class HelloWorldPrinter implements Printable {

public int print(Graphics g, PageFormat pf, int page) throws PrinterException {

if (page > 0) {

return NO_SUCH_PAGE;

}

Graphics2D g2d = (Graphics2D)g;

g2d.translate(pf.getImageableX(), pf.getImageableY());

g.drawString("Hello World!", 100, 100);

return PAGE_EXISTS;

}

}

发送一个图形实例到打印机本质上和将它发送到屏幕上一样。这两种情况你都需要做如下步骤:

* 向一个二维图形绘制内容的其它操作,像绘制测试字符串一样容易。

* 打印图形要一个很高的分辨率,这应该对大多数代码是透明的。

* Printable.print()方法被打印系统调用,就像在屏幕上显示空间时调用Component.praint()一样。打印系统将为页面0,1,……调用Printable.print()方法,知道返回NO_SUCH_PAGE.

* print()方法可以被同一个页面调用很多次,知道文档完成。这一特性将在用户指定打印多个副本时用到。

* PageFormat的可绘制区域决定了剪切区域。可打印区域在计算分页数或如何控制打印内容的范围时同样很重要,因为分页符是通过每页适应的程度来定义。

提示:对某些页面索引,print()方法可能会跳过,如果用户指定了不同的页面范围,指定了某些不被包含在内的特定页面索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值