• java之打印机服务通俗做法


    javax.print包是API的主包,其中包含的类和接口能够让你:1)发现打印服务(Print Services)2)指定打印数据的格式 3)从一个打印服务创建打印工作(print jobs) 4)向一个打印设备或者数据流发送打印数据

    通俗点就是:1)列出打印机列表  2)整合要打印的页面  3)获取打印服务对象并设置要干什么  4)打印对象要干什么通过打印机去干

    //打印机列表
    PrintService[] printService = PrintServiceLookup.lookupPrintServices(null, null);
    PrintService ps = null;
    for (int i = 0; i < printService.length; i++) {
        String pn = printService[i].getName();
        System.out.println(pn);
    }
    float dpm = 72 / 25.4f;
    //理解成书
    Book book = new Book();
    //设置成竖打
    PageFormat pf = new PageFormat();
    pf.setOrientation(PageFormat.PORTRAIT);
    //理解成纸,大小严格按实际
    Paper pp = new Paper();
    pp.setSize(dpm * 40, dpm * 30);// 纸张大小
    pp.setImageableArea(0, 0, dpm * 40, dpm * 30);// 打印区域
    pf.setPaper(pp);
    // 把 PageFormat 和 Printable 添加到书中,组成一个页面
    TickPage page = new TickPage();//TickPage是重写Printable的类,其实现打印内容的详细
    book.append(page, pf);
    // 获取打印服务对象
    PrinterJob job = PrinterJob.getPrinterJob();
    // 设置打印类
    job.setPageable(book);
    //告诉打印机
    job.setPrintService(ps);
    //打印
    job.print();
    public class TickPage implements Printable {
        public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
            //NO_SUCH_PAGE告诉打印机没东西打
            if(pageIndex!=0)return NO_SUCH_PAGE;
            //要怎么打印东西都在这里
            g.setFont(new Font("",0,7));
            g.drawString("hello zhylioooo!",10,20);
            return PAGE_EXISTS;
        }
    }
  • 相关阅读:
    STM32 时钟配置分析
    STM32 开发板资源梳理
    STM32 摄像头实验OV2640
    STM32 TFT液晶屏与FSMC
    STM32 开发板电源与供电方式
    视觉里程计07 Qt的一些bug修改记录
    解决wireshark检测不到网卡的问题
    gdb 脚本调试
    [转] GCC 中的编译器堆栈保护技术
    使用gdbserver远程调试
  • 原文地址:https://www.cnblogs.com/zhylioooo/p/8065907.html
Copyright © 2020-2023  润新知