java打印图片和字符串到打印机

用java实现打印图片和string,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,

然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。

public class CertificatePrintB extends JLabel implements Printable{
    private static final long serialVersionUID = 1L;
    final int Length = 29;
    private CertificateAFrame ca;
    //private CertificateBFrame cb;
    //private AnimalBFrame ab;
    private String[] value;
    private ImageIcon ii;
    private int position[][] = new int[Length][2];
    
    public CertificatePrintB(ChoosePrintBFrame cpb) //打印
    {
        //this.cb = cb;
        LocateSetB();
        value = cpb.getInfoStrings();
        ii = cpb.getImg();
    }

    public void LocateSetB()    //打印坐标分布
        position[0][0]=140;    
        position[0][1]=110;
        
        position[1][0]=380;
        position[1][1]=110;
        
        position[2][0]=140;
        position[2][1]=140;
        
        position[3][0]=380;
        position[3][1]=140;
        
        position[4][0]=135;
        position[4][1]=169;

        position[5][0]=135;
        position[5][1]=200;
        
        position[6][0]=135;
        position[6][1]=228;
        
        position[7][0]=135;
        position[7][1]=257;
        
        position[8][0]=385;    //签名
        position[8][1]=261;
        
        position[9][0]=365;    //签发日期
        position[9][1]=318;
        
        position[10][0]=420;
        position[10][1]=318;

        position[11][0]=470;
        position[11][1]=318;
        
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
    }
    public int print(Graphics g, PageFormat pf, int pageIndex)
    {
        System.out.println(pageIndex);

        if(pageIndex > 0)
        {
            return Printable.NO_SUCH_PAGE;
        }

        Graphics2D g2d = (Graphics2D)g;
        for(int i = 0; i < value.length+1; i++)
        {
            int j = i;
            int[] temp = position[i];
            int x = temp[0];
            int y = temp[1];
            if(i==8)
            {
                g2d.drawImage(ii.getImage(), x, y,this);
                continue;
            }
            if(i>8)
            {
                j=i-1;
            }
            String str = value[j];    
            //System.out.println(j);
            g2d.drawString(str, x, y);
        }
        return Printable.PAGE_EXISTS;
    }

    public void printInfo()
    {
        PrinterJob pj = PrinterJob.getPrinterJob();
        PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
        Paper paper = pf.getPaper();
        double pageWidth, pageHeight;
        
        if(ca == null) {
            pageWidth = 1655;
            pageHeight = 1098;
        } else {
            pageWidth = 1631;
            pageHeight = 2214;
        }
        
        paper.setSize(pageWidth, pageHeight);
        paper.setImageableArea(0, 0, pageWidth, pageHeight);
        pf.setPaper(paper);

        pj.setPrintable(this, pf);

        for(int i=0; i<value.length; ++i)
        {
            System.out.println(value[i]);
            System.out.println(position[i][0]+"\t"+position[i][1]);
        }
        System.out.println(pageWidth + " " + pageHeight);
        
        if(pj.printDialog())
        {    
            try
            {
                pj.print();  
            }
            catch(PrinterException e)
            {
                e.printStackTrace();
            }
        }    
    }

}

用java实现打印,就只要先把要打印的内容画出来,然后调用打印机就行啦~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值