关于纸张高度不定的小票打印,建议使用纯文本进行设计,避免纸张高度引起变形,或超文本解析差异造成一些影响:
LODOP纸张高度不定的纯文本累计高度
上面的链接的博文里,纯文本可通过间距和高度值累计,得出最后的纸张高度,上个链接用的是默认单位,由于纸张的默认单位是0.1mm,而打印项的单位是px(不同于超文本内部的px),需要换算,这次直接用mm进行测试,更直观。
超文本中,并不是打印项高度和间距就是纸张大小,和超文本本身的内容也有关系,而纯文本则就是打印项高度。
如图,方法1:一个超文本打印项,打印项高度设置为 30mm,实际内容小于30mm,最后的纸张高度结果是9.8mm
方法2:一个纯文本打印项,内容是几个字,很小,设置打印项高度为30mm,最后之纸张为29.9mm,约定于时30mm,在换算误差之内,所以纯文本不是按内容而是设置的打印项高度,下方留了很多空白。
方法:3:两个超文本打印项,最后一个超文本打印项顶边距为20mm,设置的打印项高度为30mm,最后的纸张高度是29.9mm。
由方法1可以知道这个超文本打印项高度大约为9.8约等于10mm
方法2的顶边距为20mm,加上打印项实际的高度9.8,20mm+9.8mm约等于29.8,和最后的29.9也差不多,属于在换算误差范围内。
测试代码:
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>WEB打印控件LODOP</title> <script language="javascript" src="LodopFuncs.js"></script> </head> <body> <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,1200,0,"");//这里3表示纵向打印且纸高“按内容的高度”;1200表示纸宽138.5mm;0表示页底空白0mm LODOP.ADD_PRINT_HTM(0,0,"80mm","30mm","<body>\r HTML Demo content\r <br><font color=\"#FF0000\">Double click me and modify...</font>\r</body>"); LODOP.PREVIEW();//预览查看纸张高度为9.8mm }; 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_TEXT(0,0,"80mm","30mm","几个字"); LODOP.PREVIEW();//预览查看纸张高度为29,9mm,约定于30mm }; function prn3_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_HTM(0,0,"80mm","30mm","<body>\r HTML Demo content\r <br><font color=\"#FF0000\">Double click me and modify...</font>\r</body>"); LODOP.ADD_PRINT_HTM("20mm",0,"80mm","30mm","<body>\r HTML Demo content\r <br><font color=\"#FF0000\">Double click me and modify...</font>\r</body>"); LODOP.PREVIEW();//预览查看纸张高度为29.9mm }; </script> </body>
图示:
方法1:超文本打印项高度设置的30mm,实际纸张是9.8mm
方法2:纯文本打印项高度设置的30mm,实际纸张是29.9mm(在换算误差内)
方法3:最后超文本打印项高度top20mm,打印项高度30mm,实际纸张不是50mm,是29.8,20mm+9.8mm(在换算误差内)
由方法1可以知道这个超文本打印项高度大约为9.8mm。