打印维护是针对整个任务进行维护的,打印多少个打印项就要维护多少个打印项,维护了多少打印项,就要打印多少内容。
但是打印的时候不需要打印其他列,可以把其他列的数值传入空置,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一个任务多列,只打一列如何维护的更多相关文章

  1. 新建一个DataTable(只针对一列)

    /// <summary> /// 新建一个DataTable(只针对一列) /// </summary> /// <param name="dataStr&q ...

  2. Excel下拉框多列显示,如何只显示一列

    小编最近接手一个项目,之于需要导数据,但是我们需要提前把表头什么的设置好,更方便其他小伙伴们帮助我们导入数据,小伙伴们都知道,在excel中设置下拉菜单很简单,直接用数据有效性-序列就可以实现,今天小 ...

  3. LODOP循环多任务 同模版只设置不同队列任务名

    LODOP中从PRINT_INIT(或PRINT_INITA)到最后PRINT(或PREVIEW等),是一个任务,关于Lodop中一个任务,以及一个任务中可以包含哪些语句,详细可查看本博客另一篇博文: ...

  4. ios 一个正则表达式测试(只可输入中文、字母和数字)

    一个正则表达式测试(只可输入中文.字母和数字) 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到.之前在用java时特别是对用户名或密码使用正则非常爽,写 脚本上 ...

  5. Sql查询一个列对应多个列

    Sql查询一个列对应多个列 今天遇到一个问题,表table1有两个字段col1.col2两个字段.先记录下来,以后有个参考. 现在需要查询出的数据满足如下要求: 1.col1重复.col2重复的数据只 ...

  6. 在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?

    在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?(效果图如下:): 在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列(效果图) 实现该 ...

  7. 在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解决,谢谢!

    在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解 ...

  8. SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...

  9. 1130mysql explain中的type列含义和extra列的含义

    很多朋友在用mysql进行调优的时候都肯定会用到explain来看select语句的执行情况,这里简单介绍结果中两个列的含义. 1 type列 官方的说法,说这列表示的是"访问类型" ...

随机推荐

  1. Hoax or what UVA - 11136(multiset的应用)

    刚开始把题意理解错了,结果样例没过,后来发现每天只处理最大和最小的,其余的不管,也就是说昨天的元素会影响今天的最大值和最小值,如果模拟的话明显会超时,故用multiset,另外发现rbegin()的功 ...

  2. 通过jekyll在Github 搭建个人博客

    能快乐旅行的人,一定是轻装旅行的人 前言 应广大的网友(装逼~~哈哈)要求,决定写个Jekyll+Giuhub搭建博客的教程,以便帮助更多的人,毕竟我也是这么过来的.这是我的博客地址,可以先看看效果. ...

  3. Centos7-新增硬盘挂载

    查看现有硬盘情况 df -h fdisk -l 查看新硬盘 ls /dev/sdb 具体操作 fdisk /dev/sdb m n #添加一个新的分区 p #创建主分区 w #保存并退出 partpr ...

  4. Linux CentOS7.x安装docker全过程

    1.在安装docker之前,首先使用yum -y remove docker命令移除系统中已有的旧版本的docker yum -y remove docker 这里显示该系统没有安装过docker: ...

  5. nginx和ftp搭建图片服务器

    一.需要的组件 图片服务器两个服务: Nginx(图片访问): 1.http服务:可以使用nginx做静态资源服务器.也可以使用apache.推荐使用nginx,效率更高. 2.反向代理 实现 负载均 ...

  6. 讲解Flume

    Spark Streaming通过push模式和pull模式两种模式来集成Flume push模式:Spark Streaming端会启动一个基于Avro Socket Server的Receiver ...

  7. C++报错:全局变量重定义或是多次定义

    如何在C++中定义全局变量时避免重复定义呢? 只要在定义时尽量在.cpp文件中进行,而不要在.h 文件中定义,定义好了之后,可以在.h文件中利用extern关键字进行声明. 如果在.h文件中定义的话, ...

  8. 【批处理】for命令

    for 命令 学习:https://www.cnblogs.com/Braveliu/p/5081087.html FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式( ...

  9. Lightning Web Components 组件生命周期(六)

    组件创建以及渲染流程 组件移除dom 处理流程 组件从dom 移除 组件中的disconnectedCallback() 方法被调用 子组件从dom 移除 每个子组件的disconnectedCall ...

  10. vue transition实现页面切换效果

    我们都知道vue可以做成单页应用 点击的时候就能切换  如果我们要添加一些视觉效果 比如页面切换的时候有一个缓冲效果 这个时候就需要用到vue里的transition这个标签 在使用这个标签之前需要了 ...