首页 新闻 会员 周边

java本地打印条码图片

0
悬赏园豆:10 [待解决问题]

public class Test4 implements Printable {

public String sply = "barcode";
public int print(Graphics gra, PageFormat pf, int pageIndex)
   throws PrinterException {
  Component c = null;
  // print string
  // 转换成Graphics2D
  Graphics2D g2 = (Graphics2D) gra;
  // 设置打印颜色为黑色
  //g2.setColor(Color.black);
  // 打印起点坐标
  double x = pf.getImageableX();
  double y = pf.getImageableY();
  System.out.println(x);
  System.out.println(y);
  switch (pageIndex) {
  case 0:
Dialog 和 DialogInput
   //Font font = new Font("新宋体", Font.PLAIN, 9);
   //g2.setFont(font);// 设置字体
   // BasicStroke bs_3=new BasicStroke(0.5f);
   //float[] dash1 = { 2.0f };
   // 设置打印线的属性。
   // 1.线宽 2、3、不知道,4、空白的宽度,5、虚线的宽度,6、偏移量
   //g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT,
     //BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
   // g2.setStroke(bs_3);//设置线宽
   //float heigth = font.getSize2D();// 字体高度
   // -1- 用Graphics2D直接输出
   // 首字符的基线(右下部)位于用户空间中的 (x, y) 位置处
   // g2.drawLine(10,10,200,300);


   String sply = this.getSply();
   Image src = Toolkit.getDefaultToolkit().getImage(
     "C:\\" + sply + ".jpeg");


   g2.drawImage(src, (int) x, (int) y, c);   int img_Height = src.getHeight(c);
   int img_width = src.getWidth(c);
   System.out.println("img_Height="+img_Height+"img_width="+img_width);
   //g2.drawImage(src, (int) x,(int) (y + 1 * heigth + img_Height + 11), c);


   return PAGE_EXISTS;
  default:
   return NO_SUCH_PAGE;
  }


}
public static void main(String[] args) {
  // 通俗理解就是书、文档
  Book book = new Book();
  // 设置成竖打
  PageFormat pf = new PageFormat();
  //pf.setOrientation(PageFormat.PORTRAIT);
  // 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
  Paper p = new Paper();
  final double MM_TO_PAPER=72/25.4;//打印的尺寸单位,1/72英寸,转换成mm
  p.setSize(103*MM_TO_PAPER, 15*MM_TO_PAPER);// 纸张大小
  p.setImageableArea(0, 0, 103*MM_TO_PAPER,15*MM_TO_PAPER);// A4(595 X
  // 842)设置打印区域,其实0,0应该是72(右移),72,因为A4纸的默认X,Y边距是72
  pf.setPaper(p);
  // 把 PageFormat 和 Printable 添加到书中,组成一个页面
  book.append(new Test4(), pf);
  // 获取打印服务对象
  PrinterJob job = PrinterJob.getPrinterJob();
  // 设置打印类
  job.setPageable(book);


  try {
   // 可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印
    boolean a=job.printDialog();
    if(a)
    {
   job.print();  }
  } catch (PrinterException e) {
   e.printStackTrace();
  }
}


public String getSply() {
  return sply;
}


public void setSply(String sply) {
  this.sply = sply;
}
}

 

打印出来的图片比原来的图片大?然后位置也有问题??

泥沙时代的主页 泥沙时代 | 初学一级 | 园豆:165
提问于:2013-03-19 23:45
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册