PRINT没有返回job代码或truefalse,返回ok的一种情况

之前也有其他客户问过,PRINT获取是否加入队列,返回的不是true或false,而是ok。
或加上LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);,返回的不是job代码,而是ok。

之前的客户没有发代码,所以我让他们测试样例,样例右键查看源码,对照样例排查,估计这些人对照样例自己排查到了,这次有客户直接发了自己的代码,知道了为什么那些客户说返回ok的原因,是因为一个错误用法。

原因是在任务里指定打印机语句错误,用成了设置winodws默认打印机。
如果想有设置winodows打印机的功能,可以单独一个按钮等作为设置win默认打印机的功能。
而在打印任务里指定打印机,则需要用指定打印机的语句,具体可参考样例7,或样例5的第2步。

设置windows默认打印机在样例5的第7步,估计是参考样例的时候没有注意样例5的第3步的那个获取本机打印机列表,指定打印机的方法。而是误认为这个设置windows默认打印机为指定打印机。

简短问答:

1.为什么print返回的不是true或false,而是ok?

参考样例4,35 http://www.c-lodop.com/demolist/PrintSample35.html
对照样例排查下,样例右键查看源码。

指定打印机语句是怎样指定的,是用的样例7的方式吗,SET_PRINTER_INDEX这种。

发一下代码。
是否用了SET_PRINT_MODE("WINDOW_DEFPRINTER", "设置windows默认打印机这种。
如果要在任务中指定打印机,用样例7那种,例如SET_PRINTER_INDEX这种。

2..为什么print加CATCH_PRINT_STATUS返回的不是job代码,而是ok?

样例45 http://www.c-lodop.com/demolist/PrintSample45.html

样例右键查看源码,对照样例排查下。

--简短问答结束----

测试代码:

<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
不是正常任务选打印机(设置winodws默认打印机了):<input type="text" id="T1" size="48"><br>
正常任务选打印机:<input type="text" id="T2" size="48"><br>
<p><a href="javascript:MyPrint1()">任务里不是选打印机,设置windows默认打印机</a></p>
<p><a href="javascript:MyPrint2()">任务里正确指定了打印机</a></p>
 <script language="javascript" type="text/javascript">
        var LODOP; //全局变量
        function MyPrint1() {//客户的一种错误用法,导致返回ok,设置windows默认打印机,而不是在任务内指定打印机
            LODOP = getLodop();            
            LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_获得打印状态1");
            LODOP.SET_PRINT_MODE("WINDOW_DEFPRINTER", "Microsoft XPS Document Writer");//设置windows默认打印机,
            LODOP.ADD_PRINT_TEXT(50, 231, 260, 39, "打印的第一页内容");
            LODOP.NEWPAGEA();
            LODOP.ADD_PRINT_TEXT(50, 231, 260, 39, "打印的第二页内容");
            LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);
            if (LODOP.CVERSION) {
                LODOP.On_Return = function (TaskID, Value) { document.getElementById('T1').value = Value; };              
                LODOP.PRINT();
                return;
            } else document.getElementById('T1').value = LODOP.PRINT();
        };
        function MyPrint2() {//正确的一种在任务中指定打印机的方法
            LODOP = getLodop();
            LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_获得打印状态1");
            LODOP.SET_PRINTER_INDEX("Microsoft XPS Document Writer");//在任务内指定打印机    
            LODOP.ADD_PRINT_TEXT(50, 231, 260, 39, "打印的第一页内容");
            LODOP.NEWPAGEA();
            LODOP.ADD_PRINT_TEXT(50, 231, 260, 39, "打印的第二页内容");
            LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS", true);
            if (LODOP.CVERSION) {
                LODOP.On_Return = function (TaskID, Value) {document.getElementById('T2').value = Value; };           
                LODOP.PRINT();
                return;
            } else document.getElementById('T2').value = LODOP.PRINT();
        };


    </script>
</body>

图示 :

原文地址:https://www.cnblogs.com/huaxie/p/13534736.html