打印机指令集EPL、ZPL、BPL
我要开发使用以上三种指令集的打印机控制程序,遇到了几个问题:
1、貌似没有指令可以获取硬件DPI值,而任何尺寸参数都使用dot作为单位,没有DPI的情况下我如何计算dot到mm?
2、多指令集切换在java上一般是如何实现的?
3、除了USB以外的接口方式如何获取设备的型号信息?
求解答,谢谢
我要开发使用以上三种指令集的打印机控制程序,遇到了几个问题:
1、貌似没有指令可以获取硬件DPI值,而任何尺寸参数都使用dot作为单位,没有DPI的情况下我如何计算dot到mm?
2、多指令集切换在java上一般是如何实现的?
3、除了USB以外的接口方式如何获取设备的型号信息?
求解答,谢谢
怪不得厂家提供的程序都只是C# C/C++ VBA VB.net之类...反正没java的
如果是这样的话,可以尝试用配置的方式输入。
至于原厂...台湾、欧美、意大利,我认为我能搞到所有技术标准最新版本的英文资料已经很强力了。
我看过一个需要付费的通用打印程序(行业中比较有名的),基本上是先获取设备型号,然后枚举型号支持的指令集,再然后枚举指令集对应的dll。这种方式需要录入所有支持设备的型号,对我来说是不希望做的...
dpi是打印机一个稳定的固有属性吧?如果可以获取其它的属性,我觉得不出意外这个也肯定是会有的,可能不是你预想的那种直接的获取方式,或许是需要通过一种变通的方式也未可知。比如(只是假设)可以获取到inch per dot=0.01之类的,就可以换算了。另外打印机安装之后应该是向系统注册信息了的,看看这种是不是okPrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);for (PrintService service : services) {
System.out.println(service.getName());
PrinterResolution[] supportedResolutions = (PrinterResolution[]) service.getSupportedAttributeValues(javax.print.attribute.standard.PrinterResolution.class, null, null);for (PrinterResolution supportedResolution : supportedResolutions) {
int[] resolution = supportedResolution.getResolution(PrinterResolution.DPI);
System.out.println(resolution[0] + "x" + resolution[1]);
}System.out.println();
}
http://www.java.net/node/657492
http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/PrinterResolution.html
不过这种做法倒是可取的,java程序就应该用java的方式...只不过要用户自己去安装各类打印机的驱动程序还不如让用户找一下dpi在哪标。
那能不能自己安装一下,然后运行下这个java程序可不可行,以次来验证打印机是否提供了dpi信息。如果能得到的话,就证明只是自己没找到,而不是它没有。