论坛首页 入门技术论坛

java 打印程序和专业的条码打印机怎么通信

浏览 15385 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-06-06  
问题背景:
       我用一个程序产生了一个条形码,我想把这个条形码用专业的条码打印机来打印出来!因为专业的打印机需要有他特有的指令,现在的问题是不知道java打印程序怎么和打印机通信。 也就是说怎么把这些指令怎么传给条码打印机
这里的打印机是:TEC 条码打印机。
我把程序贴出来,大家帮我看看怎么解决这个问题
public class PrintTest implements Printable {

public int print(Graphics gra, PageFormat pf, int pageIndex)
throws PrinterException {

Component c = null;

// 转换成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
// 设置打印颜色为蓝色
g2.setColor(Color.BLUE);

// 打印起点坐标
double x = pf.getImageableX();
System.out.println(x+"初始化");
double y = pf.getImageableY();
System.out.println("x=" + x);

Image src = Toolkit.getDefaultToolkit().getImage(
"D:\\jboss+eclipse\\eclipse\\workspace\\javaTest\\barcode3.jpg");

// 这个得到这个图片的高度和宽度
int img_Height = src.getHeight(c);

int img_width = src.getWidth(c);

// 这里的意思就是图片在白纸上的坐标
g2.drawImage(src, (int) (x + img_width + 50),
(int) (y + img_Height + 50), c);
         //PAGE_EXISTS = 0 是接口里定义的常量
return PAGE_EXISTS;

}

public static void main(String[] args) {

Book book = new Book();
// 设置成竖打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
String str="sss";
// 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
//把页面大小传到pageformat对象里
Paper p = new Paper();
p.setSize(590, 840);// 纸张大小

p.setImageableArea(10, 10, 590, 840);// A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72
pf.setPaper(p);
// 把 PageFormat 和 Printable 添加到书中,组成一个页面

book.append(new PrintTest(), pf);

// 获取打印服务对象
PrinterJob job = PrinterJob.getPrinterJob();


job.setPageable(book);

try {
           
job.print();
System.out.println("the page is printed");

} catch (PrinterException e) {
e.printStackTrace();
}
}

}
  • 描述: 这个是用到的条形码
  • 大小: 5.9 KB
   发表时间:2007-06-06  
随便打印就行了. 我们以前的做产品的条码都是直接出片就行了, 不需要用专门的条码打印机的.
0 请登录后投票
   发表时间:2007-06-06  
谢谢上面的回复!但我现在情况就是:公司必须要使用专业的打印级,我用普通的打印机是可以打印出来的,但我现在还没有测试我打印出来的条形码能不能被扫描枪识别!大家有没有思路,或者程序片断?请大家!
再次谢谢!
0 请登录后投票
   发表时间:2007-06-06  
用 JNI 调用打印机的 DLL 库,自己完全用 Java 做太费时了。
0 请登录后投票
   发表时间:2007-06-06  
谢谢上面的回复!不是很明白,能不能说的详细点呢?
开发背景是这样的:
仓库当有一批货进来后,把每个货的信息用条形码的形式表现出来,然后这批货所有的信息打在一个lable上,并打印出来!!
0 请登录后投票
   发表时间:2007-06-06  
liuwangxia,你好 !我刚才看了一些JNI的知识,感觉头很晕,具体有什么思路呢,我现在只是了解下JNI是什么,做什么用的,其他的还不明白,能不能给我讲一下究竟怎么做? 思路!
0 请登录后投票
   发表时间:2007-06-06  
你可以把条码打印机当做普通的打印机使用。

如果你要用java程序直接和条码机通信,那么你就要看他们有没有提供通信接口给你,如果有那么你可以用jni来实现了。:)
0 请登录后投票
   发表时间:2007-06-06  
cryboy2007 写道
谢谢上面的回复!不是很明白,能不能说的详细点呢?
开发背景是这样的:
仓库当有一批货进来后,把每个货的信息用条形码的形式表现出来,然后这批货所有的信息打在一个lable上,并打印出来!!


这个就是相当于我们平时见到的牌子(新衣服都有的),我们也有类似的需求,我们是B/s架构,直接用html搞定(它去调用打印机)
0 请登录后投票
   发表时间:2007-06-06  
呵呵,谢谢大家的回复!
通过大家的讨论,我又学到了一些知识:
如果用java 去实现打印条码是没有问题的!
但如果用java打印程序和专业的打印机去通信,我还是没有找到方法!如果不用专业的打印机,则完全可以实现这个功能!但公司现在必须要用专业的打印机,就不的不寻找其他方案!
我准备这样做:
根据liuwangxia  的提示 用JNI 来调用一个vc的 dll来做这个功能。但我又不熟悉vc ,希望懂VC的朋友以后多多帮忙(毕竟多了解一些语言对丰富自己的知识面是很有帮助的)!
等我把这个功能做好了,我把源程序贴出来让大家看看!多交流下!
再次感谢大家,如果用java可以做到,可以继续讨论,我也密切关注中,只不过现在老大催的紧,没有时间来想了!请大家继续踊跃发表自己的意见,来让大家通过进步!
0 请登录后投票
   发表时间:2007-06-19  
老大,最终如何实现的啊???
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics