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

首先我们在使用打印机的话我们需要得到我的这个相关的一些数据,然后我们需要实例化我的这个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();
        }
    }
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Java中,可以使用javax.print包中的类来监控和管理打印机的缓冲区。以下是一种可能的实现方法: 首先,我们需要获取系统上可用的打印机列表。可以使用PrintServiceLookup类中的lookupPrintServices()方法来获取打印机列表。 接下来,选择要监控的打印机,并获取其PrintService对象。 然后,可以使用PrinterJob类中的getPrintService()方法来获取打印作业的PrintService对象。我们还可以使用PrinterJob类中的getPrintServiceAttributeSet()方法来获取打印机的属性集。 使用PrintService对象,我们可以获取打印机的状态信息。可以使用PrintService类中的isDocFlavorSupported()方法来检查打印机是否支持指定的文档格式,可以使用isPrinterValid()方法来检查打印机是否处于可用状态。 要打印时,可以将打印内容添加到打印队列中。可以使用PrintService类的createPrintJob()方法来创建一个PrintJob对象,使用PrintJob类的addPage()方法添加要打印的页面,然后使用PrintJob类的print()方法来执行打印作业。 另外,可以使用PrintService类中的getPrinterState()方法来获取打印机的当前状态,例如是否正在打印、是否有错误等。还可以使用PrinterStateReasons类来获取打印机的状态原因。 总结起来,要监控打印机的缓冲区,我们可以使用Java中的javax.print包提供的类来获取打印机列表、选择打印机、获取打印机状态信息、执行打印作业等操作。同时,还可以利用打印机PrintService对象来检查打印机是否支持指定格式的文档,以及获取打印机的当前状态。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值