使用PrinterJob进行分页打印

简介: 使用PrinterJob进行分页打印

  https://blog.csdn.net/quantum7/article/details/109055137

  这一篇博文是使用的PrintJob。实际上还可以使用PrinterJob。具体代码是:

package taishan;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.attribute.HashAttributeSet;
import javax.print.attribute.standard.PrinterName;
public final class PrinterFrame extends TFrame implements Printable
{
    private final static AffineTransform CLOCKWISE_TX     = AffineTransform.getRotateInstance( Math.PI / 2);
    private final static String FONT_NAME_SONGTI = "宋体";
    private final static int FONT_SIZE  = 30;
    private final static String TAISHAN = "泰山Office";
    private final static int   COUNTER_X = 3;
    private final static int   COUNTER_Y = 1;
    private final static int   START_X   = 100;
    private final static int   START_Y   = 100;
    private final static int   STEP      = 50;
    public PrinterFrame()
    {
        this.getContentPane().setBackground(Color.WHITE);
        Font font = new Font(FONT_NAME_SONGTI, 0, FONT_SIZE);
        font = font.deriveFont(CLOCKWISE_TX);
        this.setFont(font);
    }
    private void drawTest(Graphics g)
    {
        int startX = START_X + COUNTER_X * STEP;
        int startY = START_Y + COUNTER_Y * STEP;;
        SimpleDateFormat dft = new SimpleDateFormat("HH:mm:ss");
        String text = dft.format(new Date());
        g.drawLine(startX, startY, startX+100, startY);
        g.drawString(text, startX, startY);
        startX += STEP;
        startY += STEP;
        g.drawLine(startX, startY, startX,     startY+200);
        g.drawString(TAISHAN, startX, startY);
    }
    @Override
    public void paint(Graphics g)
    {
        super.paint(g);
        drawTest(g);
    }
    @Override
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException
    {
        System.out.println(" print "+pageIndex);
        if (pageIndex > 0)
        {
            return Printable.NO_SUCH_PAGE;
        }
        Graphics2D g2d = (Graphics2D)graphics;
        drawTest(g2d);
        g2d.setPaint(Color.BLACK);
        g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
        Font font = new Font("宋体", Font.BOLD, 12);
        g2d.setFont(font);
        g2d.drawString("泰山信息科技", 100, 100);
        font = new Font("黑体", Font.ITALIC, 18);
        g2d.setFont(font);
        g2d.drawString("泰山信息科技", 100, 400);
        return Printable.PAGE_EXISTS;
    }
    private static void startPrint()
    {
        HashAttributeSet hs = new HashAttributeSet();
        String printName = PrintServiceLookup.lookupDefaultPrintService().getName();
        hs.add(new PrinterName(printName, null));
        PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, hs);
        if (printServices.length == 0)
        {
            return;
        }
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        Book book = new Book();
        book.append(new PrinterFrame(), printerJob.defaultPage());
        printerJob.setPageable(book);
        try
        {
            printerJob.setPrintService(printServices[0]);
            printerJob.print();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    public static void main(String[] args)
    {
        PrintFrame frame = new PrintFrame();
        frame.setSize(1000, 600);
        frame.setVisible(true);
        startPrint();
    }
}
目录
相关文章
|
1月前
|
前端开发
bladex中自定义分页的写法~
bladex中自定义分页的写法~
18 0
|
3月前
PageHelper分页插件拼接动态排序语句
PageHelper分页插件拼接动态排序语句
|
数据库
pagehelper分页查询明明下一页没有数据了却还是返回了数据
pagehelper分页查询明明下一页没有数据了却还是返回了数据
368 0
使用PrinterJob进行分页打印
使用PrinterJob进行分页打印
112 0
分页获取数据列表GetListByPage
分页获取数据列表GetListByPage
66 0
list自定义参数分页
list自定义参数分页
65 0
|
JavaScript 前端开发
html打印表格每页都有的表头和打印分页
本文转载:http://www.cnblogs.com/RitchieChen/archive/2008/07/30/1256829.html  在做项目的时候碰到的。用户要求,页面呈现太长时,打印的时候,要求,每页上都要有表头。
1727 0
|
Java 数据库连接 数据库
分页之页面页码列表计算 | 学习笔记
快速学习分页之页面页码列表计算
223 0
|
PHP SQL
php分页数据最后一页继续追加第一页数据
之前做数据分页遇到这样一个需求,就是数据到最后一页的时候不能中断,继续把第一页的数据追加到后面,无限显示下去。 原文地址:代码汇个人博客 http://www.codehui.net/info/23.
1012 0