zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    Poj 1742 Coins(多重背包)
    Poj 2350 Above Average(精度控制)
    求二进制数中1的个数
    Poj 1659 Distance on Chessboard(国际象棋的走子规则)
    Poj 2411 Mondriaan's Dream(压缩矩阵DP)
    Poj 2136 Vertical Histogram(打印垂直直方图)
    Poj 1401 Factorial(计算N!尾数0的个数——质因数分解)
    poj 2390 Bank Interest(计算本利和)
    Poj 2533 Longest Ordered Subsequence(LIS)
    Poj 1887 Testing the CATCHER(LIS)
  • 原文地址:https://www.cnblogs.com/zhylioooo/p/8065907.html
Copyright © 2011-2022 走看看