LODOP一个任务多列,只打一列如何维护
打印维护是针对整个任务进行维护的,打印多少个打印项就要维护多少个打印项,维护了多少打印项,就要打印多少内容。
但是打印的时候不需要打印其他列,可以把其他列的数值传入空置,add_print_text纯文本空值的时候背景又是透明的,和不存在差不多。
不能通过判断等方法,只加载需要的打印项,不需要的打印项不加载,因为这样就和维护的打印项个数不同了,如果打印项不设置项目类名之类的,维护是根据的打印项的序号,因为打印项个数不同,所以维护的序号也就不同。
例如本文我测了一下,打印维护用的是四个打印项,而实际打印或预览,是通过判断的两个打印项,然后通过打印维护把每列的第二个打印项移动位置。
最后再通过实际打印或预览,如果是第一列,打印项显示正常,是维护后的,但是到第二列之后,第二个打印项的位置就不正常了,这是因为打印维护根据的是序号进行维护和修改的。
如本文的图示,在打印维护中,第二个打印项就是A002的位置被维护了,所以打印维护根据任务名记忆,记忆了第二个打印项修改后的位置,而当选择第二列是,第二个打印项的位置还会跑到A002的位置,但是实际需要的是它在B002的位置。
位置根据序号到不该在位置,这就是维护的打印项个数和预览或打印个数不同会造成的现象。
如该文中测试的,现象就是两列,维护完后,打印的时候只能是第一列是正常维护的,第二列经过维护的都会跑到第一列去,因为在任务中的序号已经改变了。
测试代码(错误测试演示代码,请勿使用,请参考本博客下方的另一份代码):
<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>
<input type="radio" id="r1" name="r" checked>打第一列<br>
<input type="radio" id="r2" name="r">打第二列<br>
<a href="javascript:prn0_preview()">打印预览(维护个数和打印不同)</a><br>
<a href="javascript:prn1_preview()">打印维护(维护个数和打印不同)</a><br>
<script language="javascript" type="text/javascript">
var LODOP; //声明为全局变量
function prn0_preview() {//错的演示,请勿使用
LODOP=getLodop();
LODOP.PRINT_INITA(0,0,"100mm","100mm","某两列内容打一列");
LODOP.SET_PRINT_PAGESIZE(1,1000,1000,"");
LODOP.ADD_PRINT_SETUP_BKIMG("<img src='bg.png'>");
LODOP.SET_SHOW_MODE("BKIMG_IN_PREVIEW",true);
if(document.getElementById("r1").checked)
{
LODOP.ADD_PRINT_TEXT(128,54,100,20,"A001");
LODOP.ADD_PRINT_TEXT(196,56,100,20,"A002");}
else{
LODOP.ADD_PRINT_TEXT(128,209,100,20,"B001");
LODOP.ADD_PRINT_TEXT(193,217,100,20,"B002");}
LODOP.PREVIEW();
};
function prn1_preview() {//错的演示,请勿使用
LODOP=getLodop();
LODOP.PRINT_INITA(0,0,"100mm","100mm","某两列内容打一列");
LODOP.SET_PRINT_PAGESIZE(1,1000,1000,"");
LODOP.ADD_PRINT_SETUP_BKIMG("<img src='bg.png'>");
LODOP.SET_SHOW_MODE("BKIMG_IN_PREVIEW",true);
LODOP.ADD_PRINT_TEXT(128,54,100,20,"A001");
LODOP.ADD_PRINT_TEXT(196,56,100,20,"A002");
LODOP.ADD_PRINT_TEXT(128,209,100,20,"B001");
LODOP.ADD_PRINT_TEXT(193,217,100,20,"B002");
LODOP.PRINT_SETUP();
};
</script>
</body>
图示:(错误测试样式代码 )后面的bg是用PS做的一个背景图,一般套打都是根据背景图套打的。

正确维护的代码(打印项个数与维护个数一致,序号一致)
function prn0_preview() {//
LODOP=getLodop();
LODOP.PRINT_INITA(0,0,"100mm","100mm","某两列内容打一列2");
LODOP.SET_PRINT_PAGESIZE(1,1000,1000,"");
LODOP.ADD_PRINT_SETUP_BKIMG("<img src='bg.png'>");
LODOP.SET_SHOW_MODE("BKIMG_IN_PREVIEW",true);
if(document.getElementById("r1").checked)
{
LODOP.ADD_PRINT_TEXT(128,54,100,20,"A001");
LODOP.ADD_PRINT_TEXT(196,56,100,20,"A002");
LODOP.ADD_PRINT_TEXT(128,209,100,20,"");//传入空置
LODOP.ADD_PRINT_TEXT(193,217,100,20,"");//传入空置
}
else{
LODOP.ADD_PRINT_TEXT(128,54,100,20,"");//传入空置
LODOP.ADD_PRINT_TEXT(196,56,100,20,"");//传入空置
LODOP.ADD_PRINT_TEXT(128,209,100,20,"B001");
LODOP.ADD_PRINT_TEXT(193,217,100,20,"B002");
}
LODOP.PREVIEW();
};
图示:
LODOP一个任务多列,只打一列如何维护的更多相关文章
- 新建一个DataTable(只针对一列)
/// <summary> /// 新建一个DataTable(只针对一列) /// </summary> /// <param name="dataStr&q ...
- Excel下拉框多列显示,如何只显示一列
小编最近接手一个项目,之于需要导数据,但是我们需要提前把表头什么的设置好,更方便其他小伙伴们帮助我们导入数据,小伙伴们都知道,在excel中设置下拉菜单很简单,直接用数据有效性-序列就可以实现,今天小 ...
- LODOP循环多任务 同模版只设置不同队列任务名
LODOP中从PRINT_INIT(或PRINT_INITA)到最后PRINT(或PREVIEW等),是一个任务,关于Lodop中一个任务,以及一个任务中可以包含哪些语句,详细可查看本博客另一篇博文: ...
- ios 一个正则表达式测试(只可输入中文、字母和数字)
一个正则表达式测试(只可输入中文.字母和数字) 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到.之前在用java时特别是对用户名或密码使用正则非常爽,写 脚本上 ...
- Sql查询一个列对应多个列
Sql查询一个列对应多个列 今天遇到一个问题,表table1有两个字段col1.col2两个字段.先记录下来,以后有个参考. 现在需要查询出的数据满足如下要求: 1.col1重复.col2重复的数据只 ...
- 在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?
在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?(效果图如下:): 在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列(效果图) 实现该 ...
- 在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解决,谢谢!
在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解 ...
- SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...
- 1130mysql explain中的type列含义和extra列的含义
很多朋友在用mysql进行调优的时候都肯定会用到explain来看select语句的执行情况,这里简单介绍结果中两个列的含义. 1 type列 官方的说法,说这列表示的是"访问类型" ...
随机推荐
- 【转】点评cat高可用实时监控系统
CAT总体介绍CAT(Central Application Tracking)是由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全 ...
- Navicat Premium 12破解激活11
下载Navicat Premium 12并安装: 百度云下载:Navicat Premium 12注册机 链接:https://pan.baidu.com/s/1UcA5yXjtdfXlBZI-2 ...
- selenium+python自动化99-清空输入框clear()失效问题解决
前言 在使用selenium做UI自动化的时候,发现有些弹出窗上的输入框,输入文本后,使用clear()方法无效. 这样会导致再次输入时,字符串不是清空后输入,而是跟着后面输入一长串,导致结果不准. ...
- python完成数组格式的请求参数的加密计算
#输入 '''order_id:31489 join_course[0][join_tel]:13130999882 join_course[0][join_name]:任学雨 join_course ...
- 05-Flutter移动电商实战-dio基础_引入和简单的Get请求
这篇开始我们学习Dart第三方Http请求库dio,这是国人开源的一个项目,也是国内用的最广泛的Dart Http请求库. 1.dio介绍和引入 dio是一个强大的Dart Http请求库,支持Res ...
- [Javascript] Sort by multi factors
For example, we have a 2D arrays; const arys = [ [], [], [] ]; We want to sort by the number first, ...
- 【转载】Visual Studio Code 构建 C/C++ 开发环境
https://www.cnblogs.com/XieSir/articles/8288051.html 1. 安装 MinGW Distro / MinGW / GNU GCC 中的任何一款,( W ...
- B/S之大文件分段上传、断点续传
4GB以上超大文件上传和断点续传服务器的实现 随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求. 但是在很多情况下,平台运营方并没有大文件上 ...
- 用于未处理异常错误的.NET框架清理工具
当你启动某些程序时,会收到与此错误类似的未处理异常错误:Unhandled e0434f4dh exception at 7c81eb33h.此问题是由于.NET框架未正确安装或.NET框架系统中的另 ...
- 从一道题浅说 JavaScript 的事件循环
最近看到这样一道有关事件循环的前端面试题: //请写出输出内容 async function async1() { console.log('async1 start'); await async2( ...