关于纸张高度不定的小票打印,建议使用纯文本进行设计,避免纸张高度引起变形,或超文本解析差异造成一些影响:
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。

最新文章

  1. 01- Shell脚本学习--入门
  2. 密码加SALT原理
  3. 为什么是List list = new ArrayList() 而不直接用ArrayList
  4. java的nio之:java的nio系列教程之channel的数据交换
  5. maven依赖缺少oracle驱动包
  6. centos和Ubuntu区别
  7. linux下FTP服务器搭建教程1
  8. LINUX 笔记-Shell 脚本控制语句
  9. 【转】mysql保存图片技术决定:保存二进制文件还是只保存图片相对路径,图片放在硬盘上面?
  10. python安装与pip操作
  11. intellij 自动导包
  12. centos6.10搭建ELK之elasticsearch6.5.4
  13. D - 文理分科 (网络流-&gt;最小割)
  14. EasyUI datebox 设置不可编辑后再次修改为可编辑失效的解决
  15. hive执行报错:Both left and right aliases encountered in JOIN &#39;s1&#39;
  16. 设置 Nuget 本地源、在线私有源、自动构建打包
  17. python第三十二课——队列
  18. 20155233 《网络对抗》Exp4 恶意代码分析
  19. STM32F103各PIN脚封装图
  20. MySQL(存储过程,支持事务操作)

热门文章

  1. Spring源码窥探之:Spring AOP初步
  2. 用vue开发一个所谓的数独
  3. 1. vue如何实现双向数据绑定
  4. [SDOI2015][bzoj 3994][Luogu P3327] 约数个数和 (莫比乌斯反演)
  5. 使用jQuery快速高效制作网页交互特效---JavaScript对象及初始面向对象
  6. 学到了林海峰,武沛齐讲的Day14完
  7. 35 | join语句怎么优化?
  8. spring boot, 容器启动后执行某操作
  9. All 关键字
  10. P1143 进制转换