最近公司新进了一台POSTEK E200标签打印机,需要在WEB端调用,公司目前项目的前端架构不是html的,是JSP的,当然在html中是可以直接调用的,但是在JSP中是需要通过先启用OCX,才可以调用的。现在说说我的排坑心得吧。


    首先预备工作要做好,先找到注册表中的信息,之前通过regsvr32注册的。
    预研:JSP调用OCX控件 - 图1

    注册表中的信息
    取到classid,就是箭头指向的id,注意要将前后的’{}’去掉。
    将之前注册的OCX文件放到项目中。
    预研:JSP调用OCX控件 - 图2
    ocx文件
    之后就是代码时间了。
    首先是JSP页面添加标签,classid字段就是上面取的注册表中的id,version也是注册表中的version,CODEBASE一定要绝对路径。height/width都为0是为了在页面中隐藏。

    1. <object
    2. id="PSKPrn64"
    3. type="application/x-oleobject"
    4. height="0" width="0"
    5. classid="clsid:81C07687-3353-4ABA-B108-94BCE81E5CBA" CODEBASE="http://127.0.0.1:8080/xx/xx/xx/64/PSKPrn.ocx#version=1.0"
    6. ></object>

    然后是JS,正常的连接,打印,关闭,需要的就是第一句,获取ocx的对象。

    1. var PSKPrn = document.getElementById("PSKPrn64");
    2. PSKPrn.OpenPort("POSTEK E200 Series");
    3. PSKPrn.PTKClearBuffer();
    4. PSKPrn.PTKSetPrintSpeed(4);
    5. PSKPrn.PTKSetDarkness(10);
    6. PSKPrn.PTKSetLabelHeight(240, 24, 0, false);
    7. PSKPrn.PTKSetLabelWidth(400);
    8. PSKPrn.PTKDrawText(40, 160, 0, 1, 1, 2, 78, personnelNumber);
    9. PSKPrn.PTKPrintLabel(1, 1);
    10. PSKPrn.ClosePort();

    亲测32位和64位的都好用。目前只使用IE好使,附赠一段判断IE浏览器的JS代码。如果哪位大神有用chrome和firefox连接该标签打印机成功的,欢迎讨论分享。

    1. if(!!window.ActiveXObject ||"ActiveXObject" in window) {
    2. console.log("当前为IE");
    3. }