1. 程式人生 > 實用技巧 >lodop和c-lodop臨時預設印表機同一任務測試

lodop和c-lodop臨時預設印表機同一任務測試

之前有博文測試了SELECT_PRINTER(),這個是臨時預設印表機,前面的博文對比了如何設定windows預設印表機,如何設定臨時預設印表機。以及臨時預設列印指定後,在lodop和c-lodop的效果。
前面的博文連結(cnblog的):LODOP指定window預設印表機和臨時預設印表機

之前博文的測試方法:
方法1:設定的windows預設印表機。
方法2:設定頁面臨時預設印表機
方法3:一個沒在程式碼裡指定具體印表機的任務。
方法4:一個在程式碼裡指定了xps具體印表機的任務。

之前博文測試結果:
LODOP效果:
1.沒在程式碼指定具體印表機的,是選擇的臨時預設印表機。
2.在程式碼指定了具體的xps印表機的,是xps印表機。

C-LODOP效果:
1.沒在程式碼指定具體印表機的,是選擇的臨時預設印表機;
2.在程式碼指定了具體的xps印表機的,還是選擇的臨時預設印表機。
注意:也就是c-lodop中,頁面指定了臨時預設印表機,即使在程式碼裡重新指定新的印表機,也是沒有效果的。

之前有人測試樣例7,先測了臨時預設印表機,再測試3,4,由於用的是c-lodop方式,所以無論指定序號,還是指定名稱,都無效了,都會還是那個指定的臨時預設印表機。

實際測試確實是這樣,因此,如果有頁面多個任務需要不同的印表機,不要用這個臨時預設印表機方式。

建議用SET_PRINTER_INDEX或SET_PRINTER_INDEXA,參考樣例5,7,例如樣例5的步驟2的這個印表機列表
http://www.c-lodop.com/demolist/PrintSample5.html
http://www.c-lodop.com/demolist/PrintSample7.html
頁面指定後傳引數方式,傳入選擇的印表機。

前面測試中,是該先指定臨時預設印表機,再在任務中測試。
此外,還有人可能會用到一個任務裡,一個任務裡選擇印表機再列印(c-lodop下不能這麼用)
本文測試下這種使用方法。

正確寫法是臨時預設印表機和列印分兩個任務,可檢視該文前面體提到的之前的博文中的臨時預設印表機。

簡短問答:

1.臨時預設印表機能在同一個任務裡嗎

SELECT_PRINTER是臨時預設印表機,lodop和c-lodop下方式不同,c-lodop是非同步的,需要分成兩個任務,先指定臨時預設印表機,再用另一個任務列印。


不建議使用這個語句,建議用SET_PRINTER_INDEX或SET_PRINTER_INDEXA,參考樣例5,7,例如樣例5的步驟2的這個印表機列表
http://www.c-lodop.com/demolist/PrintSample5.html
http://www.c-lodop.com/demolist/PrintSample7.html

不建議用臨時預設印表機,該方法lodop和c-lodop下表現不同,且c-lodop指定後,該頁面再用SET_PRINTER_INDEX等指定就會是無效了,只能重新整理頁面後才能重新選擇。

--簡短問答結束----

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>臨時預設印表機一個任務測試</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<p><a href="javascript:prn1_preview()">列印預覽(選臨時預設後列印)</a></p>
<p><a href="javascript:prn2_preview()">檢視SELECT_PRINTER()返回值</a></p>
<script language="javascript" type="text/javascript">   
        var LODOP; //宣告為全域性變數 
        var pr;
function prn1_preview() {//測試一個任務中臨時預設印表機選擇後列印
LODOP=getLodop();          //這個方法lodop可以,c-lodop不行,c-lodop是非同步的,只能分成兩個任務
LODOP.PRINT_INIT("");    //c-lodop下這個方法是錯誤的哦
LODOP.SELECT_PRINTER();
LODOP.ADD_PRINT_TEXT(27,29,100,20,"一個文字");
LODOP.PREVIEW();    
    };
function prn2_preview() {//測試SELECT_PRINTER返回值。
LODOP=getLodop();     
if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){alert("C-Lodop輸出的返回值:"+Value);};
var strResult=LODOP.SELECT_PRINTER();
if (!LODOP.CVERSION) {alert("Lodop輸出的返回值:"+strResult);}
    };
</script> 
</body>

圖示: