使用Java的PrinterJob实现调用打印机打印

  • Post author:
  • Post category:java


首先我们在使用打印机的话我们需要得到我的这个相关的一些数据,然后我们需要实例化我的这个book对象,这个book对象主要是把我的这个paperFormat对象和我的这个实体类数据的对象放入到我的这个book对象当中,那么我的paperFormat主要是用来设置我的这个打印机打印的顺序,那么说到顺序他一共有三种顺序,第一种就是从下到上从左到右打印,第二种就是从上到下从左到右的方向打印,第三章就是从上到下,从右到左的方向打印,相关的底层源代码如下

设置完我的这个打印方向了之后,我就需要实例化一个Paper对象,这个对象主要是用来设置我的这个纸张的大小和我需要打印字体的打印区域以及字与字体的行距与间距设置完之后paperFormat的这个对象里面有个setPaper的属性,他专门就是用来把Parper对象存入的,来获得我的这个打印纸张的具体信息,这下我们的这个paperFormat已经没问题了之后按照上面所说的把我这个paperFormat和实体类在这里需要

特别注意一下

,我的这个实体类需要强制转换成


Printable类型


,放到book对象中,其次到了我们最关键的时候了,那就是用来获取我的这个打印服务对象,我们必须要得到这个对象去获得我的这个打印驱动,那么如何得到呢,通过

Parinter.getPrinterJob()

得到我的这个打印机驱动对象PrinterJob,然后得到我的这个驱动对象我们就把我们刚刚设置好的book对象放入到这个PrinterJob中的

setPageable

的属性当中,最终我们使用

PrinterJob

对象去调用

print()

方法,这个print()会抛出一个PrinterException的异常,我们需要去捕捉一下即可,去链接打印机打印,具体代码如下:

package com.prints;
import com.printsActual.pojo.CheckGroup;

import java.awt.print.*;
public class prties {
    /**
     * 订单信息 实体类
     */
    private CheckGroup checkGroup;

    /**
     * 带参构造方法,把我的这个订单信息传入到打印机工具类
     * @param checkGroup
     */
    public prties(CheckGroup checkGroup) {
        this.checkGroup = checkGroup;
    }
    /**
     * 开始打印的方法
     */
    public void printer() {
        try {
            //Book 类提供文档的表示形式,该文档的页面可以使用不同的页面格式和页面 painter
            Book book = new Book(); //要打印的文档

            //PageFormat类描述要打印的页面大小和方向
            PageFormat pf = new PageFormat();  //初始化一个页面打印对象
            pf.setOrientation(PageFormat.PORTRAIT); //设置页面打印方向,从上往下,从左往右

            //设置打印纸页面信息通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
            Paper paper = new Paper();//调用我的这个纸面的对象
            paper.setSize(226, 700);// 纸张大小
            paper.setImageableArea(0, 0, 226, 700);// A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72
            pf.setPaper(paper);

            book.append((Printable) checkGroup, pf);//把我的这个纸张大小和我的这个数据的实体类传入到我的这个打印对象当中
            PrinterJob job = PrinterJob.getPrinterJob();   //获取打印服务对象,先安装打印机驱动

            job.setPageable(book);  //设置打印类

            job.print(); //开始打印
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}



版权声明:本文为weixin_51123481原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。