package com.kmall.common.utils.print.ticket.doc;

import java.awt.print.*;

/**
 * 打印文档构造
 * 适用于{@link java.awt.print}
 *
 * @author Scott Chen
 * @since 1.0
 * 2018-10-25
 */
public class PrintPageableBuilder {

    /**
     * Book 类提供文档的表示形式，该文档的页面可以使用不同的页面格式和页面
     *
     * @return
     */
    public Pageable buildPage(Printable printable) {
        //要打印的文档
        Book book = new Book();
        book.append(printable, buildPageFormat());
        return book;
    }


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

        pf.setPaper(buildPaper());
        return pf;
    }


    /**
     * 设置打印文件区域
     *
     * @return
     */
    public Paper buildPaper() {
        //通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
        Paper paper = new Paper();
        // 纸张大小, 80mm热敏纸
        paper.setSize(226, 30000);
        // 纸左右各留10mm
        paper.setImageableArea(0, 0, 226-10-10, 30000);
        return paper;
    }


}
