LODOP紙張高度不定的純文本累計高度


小票由於紙張沒有確定的高度,根據內容多少,小票打印機出多少紙,在設置紙張的時候,需要把紙張設置成不定高的紙張。
簡短問答:
小票打印 ,參考樣例18 http://www.c-lodop.com/demolist/PrintSample18.html
(小票針式打印 建議用 ADD_PRINT_TEXT文本,不用htm超文本,紙張高度不定容易引起 htm 中排版變形)

小票一般內容簡短,有文本線條二維碼條碼之類的都可能,可以直接用純文本進行設計,純文本不會像超文本一樣受瀏覽器解析的影響,(關於純文本和超文本 相關博文:LODOP中的純文本和超文本打印項

小票出紙的高度是怎么確定的呢:是由以下幾個數值的合計組成的
高度1:打印項的上邊距
高度2:打印項和打印項之間的距離
高度3:打印項本身的高度
高度4:紙張語句設置的下方留白高度
PS:如果有虛線可打區域,或整體偏移值,也會受這些的影響(可打區域相關博文:LODOOP中的各種邊距 打印項、整體偏移、可打區域、內部邊距Lodop打印控件打印機可打區域的影響 設置紙張邊緣為基點LODOP中預覽界面查看打印機的可打區域具體值

例如:如圖,測試代碼用到的打印項:兩個純文本,兩個實心矩形。(實心矩形和純文本寬高一致,由於純文本沒有背景色的設置,默認無背景色,這里用實心矩形當作背景色可以更直觀的查看到文本項本身的寬高區域。)
情況1:第一個項實心矩形頂邊距為0,高度為60。(第一個純文本同樣高和頂邊距)
第二個項實心矩形頂邊距為60,高度為60.(第二個純文本同樣高和頂邊距)
設置紙張不定高,下方留白高度為0。
效果:紙張高度為120,為兩個打印項的高度60+60之和。

情況2(測試內容超出):第一個項實心矩形頂邊距為0,高度為60。(第一個純文本同樣高和頂邊距)
第二個項實心矩形頂邊距為60,高度為60.(第二個純文本同樣高和頂邊距)
設置紙張不定高,下方留白高度為0。
效果:紙張高度為兩個打印項的高度60+60之和。
相關博文:LODOP打印超過后隱藏內容樣式
由相關博文可知,純文本超過打印項高度會隱藏,由情況1,可知打印項高度會影響紙張的高度,如情況1,兩個文本項之間存在間距,這間距是打印項高度造成的。
一般小票比較簡單,內容就是商品和價格,估計最大的文本的值,設計合適的寬高,如果商品名字很長,寬高不夠,會隱藏后面的內容。

情況:3:第一個項實心矩形頂邊距為10,高度為60。(第一個純文本同樣高和頂邊距)
第二個項實心矩形頂邊距為80,高度為60.(第二個純文本同樣高和頂邊距)
設置紙張不定高,下方留白高度為60。
效果:紙張高度為頂邊距10+打印項高度60+兩個純文本打印項的間隔(80-60-10)+第二個打印項高度60+下方留白60

也就是紙張高度=打印項高度累計+打印項間隔高度+頂邊距+底邊距(下方留白),無整體偏移可打區域等情況下。

測試代碼的寬度設定的好像有差異,不過這里演示不定高,和高度有關,寬度就不改了,因為之前截好圖了。
具體效果如圖:

測試代碼:

<a href="javascript:prn1_preview()">打印項高度(無邊距)</a><br>
<a href="javascript:prn2_preview()">打印項高度內容超出(無邊距)</a><br>
<a href="javascript:prn3_preview()">打印項高度內容超出(有上下邊距)</a><br>
<script language="javascript" type="text/javascript">   
        var LODOP; //聲明為全局變量 
    function prn1_preview() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.SET_PRINTER_INDEX("Microsoft XPS Document Writer");//指定某虛擬打印機
        LODOP.SET_PRINT_PAGESIZE(3,1385,0,"");//這里3表示縱向打印且紙高“按內容的高度”;1200表示紙寬138.5mm;0表示頁底空白0mm
        LODOP.ADD_PRINT_SHAPE(4,0,0,119,60,0,1,"#0080FF");//實心矩形,上左邊距都是0,寬119,高 60.
        LODOP.ADD_PRINT_SHAPE(4,60,0,119,60,0,1,"#80FF80");//實心矩形,上邊距都是60,寬119,高 60.
        LODOP.ADD_PRINT_TEXT(0,0,119,60,"新加文本1");
        LODOP.ADD_PRINT_TEXT(60,0,119,60,"新加文本1");
        LODOP.PREVIEW();    
    };
    function prn2_preview() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT(""); 
        LODOP.SET_PRINTER_INDEX("Microsoft XPS Document Writer");//指定某虛擬打印機
        LODOP.SET_PRINT_PAGESIZE(3,1200,0,"");//這里3表示縱向打印且紙高“按內容的高度”;1200表示紙寬138.5mm;0表示頁底空白0mm
        LODOP.ADD_PRINT_SHAPE(4,0,0,119,60,0,1,"#0080FF");//實心矩形,上左邊距都是0,寬119,高 60.
        LODOP.ADD_PRINT_SHAPE(4,60,0,119,60,0,1,"#80FF80");//實心矩形,上邊距都是60,寬119,高 60.
        LODOP.ADD_PRINT_TEXT(0,0,119,60,"     Lodop(標音:勞道譜,俗稱:露肚皮)是專業WEB控件,用它既可裁剪輸出頁面內容,又可用程序代碼直接實現復雜打印。控件功能強大,卻簡單易用,所有調用如同JavaScript擴展語句,主要接口函數如下:");
        LODOP.ADD_PRINT_TEXT(60,0,119,60,"     Lodop(標音:勞道譜,俗稱:露肚皮)是專業WEB控件,用它既可裁剪輸出頁面內容,又可用程序代碼直接實現復雜打印。控件功能強大,卻簡單易用,所有調用如同JavaScript擴展語句,主要接口函數如下:");
        LODOP.PRINT_DESIGN();
    };
    function prn3_preview() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.SET_PRINTER_INDEX("Microsoft XPS Document Writer");//指定某虛擬打印機
        LODOP.SET_PRINT_PAGESIZE(3,1385,60,"");//這里3表示縱向打印且紙高“按內容的高度”;1200表示紙寬138.5mm;60表示頁底空白6mm
        LODOP.ADD_PRINT_SHAPE(4,10,0,119,60,0,1,"#0080FF");//實心矩形,上左邊距都是0,寬119,高 60.
        LODOP.ADD_PRINT_SHAPE(4,80,0,119,60,0,1,"#80FF80");//實心矩形,上邊距都是60,寬119,高 60.
        LODOP.ADD_PRINT_TEXT(10,0,119,60,"新加文本1");
        LODOP.ADD_PRINT_TEXT(80,0,119,60,"新加文本1");
        LODOP.PREVIEW();    
    };
</script> 

圖示:

注意單位的不同,PAZESIZE的默認缺省單位是0.1mm,打印項的默認缺省單位是px。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM