java 打印程序和专业的条码打印机如何通信
java 打印程序和专业的条码打印机怎么通信
问题背景:
我用一个程序产生了一个条形码,我想把这个条形码用专业的条码打印机来打印出来!因为专业的打印机需要有他特有的指令,现在的问题是不知道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();
}
}
}
这个就是相当于我们平时见到的牌子(新衣服都有的),我们也有类似的需求,我们是B/s架构,直接用html搞定(它去调用打印机)
问题背景:
我用一个程序产生了一个条形码,我想把这个条形码用专业的条码打印机来打印出来!因为专业的打印机需要有他特有的指令,现在的问题是不知道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();
}
}
}
1 楼
xiaoyu
2007-06-06
随便打印就行了. 我们以前的做产品的条码都是直接出片就行了, 不需要用专门的条码打印机的.
2 楼
cryboy2007
2007-06-06
谢谢上面的回复!但我现在情况就是:公司必须要使用专业的打印级,我用普通的打印机是可以打印出来的,但我现在还没有测试我打印出来的条形码能不能被扫描枪识别!大家有没有思路,或者程序片断?请大家!
再次谢谢!
再次谢谢!
3 楼
liuwangxia
2007-06-06
用 JNI 调用打印机的 DLL 库,自己完全用 Java 做太费时了。
4 楼
cryboy2007
2007-06-06
谢谢上面的回复!不是很明白,能不能说的详细点呢?
开发背景是这样的:
仓库当有一批货进来后,把每个货的信息用条形码的形式表现出来,然后这批货所有的信息打在一个lable上,并打印出来!!
开发背景是这样的:
仓库当有一批货进来后,把每个货的信息用条形码的形式表现出来,然后这批货所有的信息打在一个lable上,并打印出来!!
5 楼
cryboy2007
2007-06-06
liuwangxia,你好 !我刚才看了一些JNI的知识,感觉头很晕,具体有什么思路呢,我现在只是了解下JNI是什么,做什么用的,其他的还不明白,能不能给我讲一下究竟怎么做? 思路!
6 楼
hgq0011
2007-06-06
你可以把条码打印机当做普通的打印机使用。
如果你要用java程序直接和条码机通信,那么你就要看他们有没有提供通信接口给你,如果有那么你可以用jni来实现了。:)
如果你要用java程序直接和条码机通信,那么你就要看他们有没有提供通信接口给你,如果有那么你可以用jni来实现了。:)
7 楼
hgq0011
2007-06-06
cryboy2007 写道
谢谢上面的回复!不是很明白,能不能说的详细点呢?
开发背景是这样的:
仓库当有一批货进来后,把每个货的信息用条形码的形式表现出来,然后这批货所有的信息打在一个lable上,并打印出来!!
开发背景是这样的:
仓库当有一批货进来后,把每个货的信息用条形码的形式表现出来,然后这批货所有的信息打在一个lable上,并打印出来!!
这个就是相当于我们平时见到的牌子(新衣服都有的),我们也有类似的需求,我们是B/s架构,直接用html搞定(它去调用打印机)
8 楼
cryboy2007
2007-06-06
呵呵,谢谢大家的回复!
通过大家的讨论,我又学到了一些知识:
如果用java 去实现打印条码是没有问题的!
但如果用java打印程序和专业的打印机去通信,我还是没有找到方法!如果不用专业的打印机,则完全可以实现这个功能!但公司现在必须要用专业的打印机,就不的不寻找其他方案!
我准备这样做:
根据liuwangxia 的提示 用JNI 来调用一个vc的 dll来做这个功能。但我又不熟悉vc ,希望懂VC的朋友以后多多帮忙(毕竟多了解一些语言对丰富自己的知识面是很有帮助的)!
等我把这个功能做好了,我把源程序贴出来让大家看看!多交流下!
再次感谢大家,如果用java可以做到,可以继续讨论,我也密切关注中,只不过现在老大催的紧,没有时间来想了!请大家继续踊跃发表自己的意见,来让大家通过进步!
通过大家的讨论,我又学到了一些知识:
如果用java 去实现打印条码是没有问题的!
但如果用java打印程序和专业的打印机去通信,我还是没有找到方法!如果不用专业的打印机,则完全可以实现这个功能!但公司现在必须要用专业的打印机,就不的不寻找其他方案!
我准备这样做:
根据liuwangxia 的提示 用JNI 来调用一个vc的 dll来做这个功能。但我又不熟悉vc ,希望懂VC的朋友以后多多帮忙(毕竟多了解一些语言对丰富自己的知识面是很有帮助的)!
等我把这个功能做好了,我把源程序贴出来让大家看看!多交流下!
再次感谢大家,如果用java可以做到,可以继续讨论,我也密切关注中,只不过现在老大催的紧,没有时间来想了!请大家继续踊跃发表自己的意见,来让大家通过进步!
9 楼
jinpingmei
2007-06-19
老大,最终如何实现的啊???
10 楼
yuzhi2217
2007-07-27
cryboy2007
你好!
有没有实现这个功能呢
我现在面临同样的问题
找了几天也没有找到好的解决方法!
希望你能指教下
你好!
有没有实现这个功能呢
我现在面临同样的问题
找了几天也没有找到好的解决方法!
希望你能指教下