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。

posted @ 2019-07-19 10:06  花谢悦神  阅读(1695)  评论(0编辑  收藏  举报