zoukankan      html  css  js  c++  java
  • 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();    
        };

    图示:

  • 相关阅读:
    14款经典的MySQL客户端软件
    淘宝、百度软件工程师们小调皮,各种霸气外漏
    使用Navicat for Oracle工具连接oracle出错:ORA-12737
    解析xlsx与xls--使用2012poi.jar
    LUOGU P4163 [SCOI2007]排列
    LUOGU P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
    LUOGU P1438 无聊的数列 (差分+线段树)
    LUOGU P1967 货车运输(最大生成树+树剖+线段树)
    LUOGU P3382 【模板】三分法 (三分)
    LUOGU P4027 [NOI2007]货币兑换 (斜率优化+CDQ分治)
  • 原文地址:https://www.cnblogs.com/huaxie/p/11698573.html
Copyright © 2011-2022 走看看