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();    
    };

图示:

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