java打印完整例子

java打印的资料本来就很少 做了个小例子 共大家用

import   java.awt.print.*;  
  import   java.awt.*;  

  import   javax.print.*;  
  import   javax.print.attribute.*;  
  import   javax.swing.*;  
import   javax.swing.table.*;
  class   PrintReport   implements   Printable{  
 
  private   TableModel   table;
  private   String   title;
 
  public   PrintReport(JTable   table,String   title){  
  this.table=table.getModel();  
  this.title=title;  
  PrintService[]   services=PrintServiceLookup.lookupPrintServices(  
  DocFlavor.SERVICE_FORMATTED.PRINTABLE,null  
  );  
  PrintRequestAttributeSet   attributes=new   HashPrintRequestAttributeSet();  
  PrintService   service=ServiceUI.printDialog(null,50,50,services,services[0],null,attributes);  
  if(service!=null){  
  DocPrintJob   job=service.createPrintJob();   //此接口表示了一个可使用作业属性集打印指定文档的打印作业。可从 PrintService 获得一个实现了此接口的对象
  try{  
  Doc   doc=new   SimpleDoc(this,DocFlavor.SERVICE_FORMATTED.PRINTABLE,null);  
  job.print(doc,attributes);  
  }catch(PrintException   pe){  
  pe.printStackTrace();  
 
  }  
  }  
  }  
 
  public   int   print(Graphics   g,PageFormat   pf,int   pageIndex){
   Paper p=new Paper();

  p.setSize(9.488189,3.6220472);
   pf.setPaper(p);
  if(pageIndex==0){  
  Graphics2D   g2d=(Graphics2D)g;  
  g2d.translate(pf.getImageableX(),pf.getImageableY());    
  g2d.setColor(Color.black);  
  g2d.drawString(title,200,10);
  g2d.drawString("购物单位:",20,20);
  g2d.drawString("库房:",250,20);
  g2d.drawString("结算方式:",350,20);
  g2d.drawLine(0, 25, 600, 25);
  for(int   i=0;i<table.getColumnCount();i++){  
  g2d.drawString(table.getColumnName(i),i*100,40);  
  }  
  for(int   i=0;i<table.getRowCount();i++){  
  for(int   ii=0;ii<table.getColumnCount();ii++){  
  String   cell;  
  Object   original=table.getValueAt(i,ii);  
  if(original==null)   cell="";  
  else   cell=original.toString();  
  g2d.drawString(cell,ii*100,60+i*20);  
  }  
  }  
  return   Printable.PAGE_EXISTS;  
  }else   return   Printable.NO_SUCH_PAGE;  
  }  
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值