• LODOP关联,打印项序号注意事项


    之前也有介绍过打印项序号:Lodop打印控件里SET_PRINT_STYLE和SET_PRINT_STYLEA
    如果是个给打印项添加样式,最常用的是SET_PRINT_STYLEA(0.....),第一个参数为0,紧跟着前面的打印项,就是对前面的打印项进行样式设置,如果是用打印设计进行设计,然后返回的代码或生成的代码(相关博文:),可以发现都是用的0作为序号,这样的代码容易阅读和修改不,想要修改哪个打印项的属性,或者查看哪个打印项的属性,直接找到这个打印项,后面跟着的带0的都是对这个打印项设置的属性。
    如果前面有SET_PRINT_STYLE对后面整体设置的样式,那么该打印项的样式就是前面的整体样式,和后面紧跟着的0序号的单独样式。

    该文首个链接里的博文主要是介绍样式,但是用关联的话,-1还是很有用的,关联串,本博客相关博文:LODOP打印控件关联输出各内容

    1.SET_PRINT_STYLEA必须要放在打印项之后,先加完打印项,再对单个打印项进行样式设置。(SET_PRINT_STYLE则是打印项之前)
    2.序号是针对一个任务的,分页不会影响序号排序。
    Lodop打印控件里SET_PRINT_STYLE和SET_PRINT_STYLEA 该博文后面有测试,newpage或newpagea分页,不会影响序号的排序。
    3.在给打印项设置项目名后,根据项目名赋值,同项目名的都会被赋值。

    如果一个页面有关联,而要打印多个类似的页面,注意分页是不会影响序号排序的,每个页面应该单独重新设置关联的对象,关联最好直接用-1,这样就不会出错,不管多少个页面,关联的都是当前分页页面的前一个打印项。

    关联类似于在网页设计中的定位,网页设计的时候用有相对于浏览器的绝对定位,还有div之间的相对定位等。关联就是变成了打印元素之间的相对定位。

    ---LODOP测试关联其他页的打印项(不正常的用法)---只是用来测试效果,这种用法不对哦,注意--关联其他页的对象没有意义。
    如果跨页的话,该打印项在第一页已经显示完成,然后强制分了页这种,在第二页关联了第一页的的那个打印项,会发生什么,实际测试如果是NEWPAGE();强制分页,第二页的打印项会跑到第一页去,如果是NEWPAGEA();强制分页,第二页的打印项不会跑到第一页去,但是实际还是保留了和第一页打印项的相对位置,只是在不同页,两个打印项碰不到一块去。

    第二页某个打印项 关联 第一页某个打印项 测试结果:
    1.NEWPAGE()强制分页,第二页的打印项会跑到第一页去。
    2.NEWPAGEA()强制分页,第二页打印项仍会在第二页,但是在页面的相对位置是和 第一个打印项在第一个页面的位置相对的。
    测试结果,两种相对位置都生效了,只是newpagea不会真的和第一个打印项跑到同一个页面去相对位置。

    如图,第一个是个三行的表格,第二页是个一行的表格,设置这个蓝色矩形关联第一个打印项,就是三行的那二个表格,实际效果如图:
    代码(打印项在一个页面上相对定位才有意义,不要这样用,这是错误的两个用法,这里只是测试效果):

    <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>
    <div id="div1"><!--一个三行三列的table表格-->
    <table width="300" border=1 style="border:solid 1px black;border-collapse:collapse" >
    <tr>
        <td width="100">lodop</td>
        <td width="100">c-lodop</td>
        <td width="100">c-lodop</td>
    </tr>
    <tr>
        <td width="100" >text</td>
        <td width="100">html</td>
        <td width="100">html</td>
    </tr>
    <tr>
        <td width="100">lodop</td>
        <td width="100">c-lodop</td>
        <td width="100">html</td>
    </tr>
    </table>
    </div>
    <div id="div2"><!--一个一行三列的table表格-->
    <table width="300" border=1 style="border:solid 1px black;border-collapse:collapse" >
    <tr>
        <td width="100">lodop</td>
        <td width="100">c-lodop</td>
        <td width="100">c-lodop</td>
    </tr>
    </table>
    </div>
    <a href="javascript:prn1_preview()">打印预览</a><br>
    <a href="javascript:prn2_preview()">打印预览2</a><br>
    <script language="javascript" type="text/javascript">   
            var LODOP; //声明为全局变量 
        function prn1_preview() {//第二页打印项,关联第一页打印项,没有意义,不要这样用哦
            LODOP=getLodop(); 
            LODOP.PRINT_INIT("");
            LODOP.SET_PRINT_PAGESIZE(1,1000,500,"");
            LODOP.ADD_PRINT_HTM(25,30,309,90,document.getElementById("div1").innerHTML);
            LODOP.NEWPAGE();
            LODOP.ADD_PRINT_HTM(25,30,309,90,document.getElementById("div2").innerHTML);
            LODOP.ADD_PRINT_SHAPE(4,0,0,174,22,0,1,"#0000FF");
            LODOP.SET_PRINT_STYLEA(0,"LinkedItem",1);
            LODOP.PREVIEW();    
        };
        function prn2_preview() {//第二页打印项,关联第一页打印项,没有意义,不要这样用哦
            LODOP=getLodop(); 
            LODOP.PRINT_INIT("");
            LODOP.SET_PRINT_PAGESIZE(1,1000,500,"");
            LODOP.ADD_PRINT_HTM(25,30,309,90,document.getElementById("div1").innerHTML);
            LODOP.NEWPAGEA();
            LODOP.ADD_PRINT_HTM(25,30,309,90,document.getElementById("div2").innerHTML);
            LODOP.ADD_PRINT_SHAPE(4,0,0,174,22,0,1,"#0000FF");
            LODOP.SET_PRINT_STYLEA(0,"LinkedItem",1);
            //LODOP.PRINT_DESIGN();
             LODOP.PREVIEW();    
        };
    </script> 
    </body>

    图示:

    如果是连续关联,类似连续的关联串,可以查看该博文开始的那个链接,用-1进行连续关联,每个都关联上一个打印项。
    也可以多个关联一个,比如表格随着内容不固定,许多打印项都要关联哪个表格,那个时候,用负数就显的比较麻烦了,可以直接填被关联的打印项序号,序号是一个任务中,从第一个打印项开始,往下自然数排序。
    如果前面的打印项也有时修改,又修改关联序号比较麻烦,也可以把table放到第一个打印项上,所有打印项都关联1。如图,一个table后面有许多小打印项,都关联表格,都针对表格的相对位置。
    代码:

    <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>
    <div id="div1"><!--一个三行三列的table表格-->
    <table width="300" border=1 style="border:solid 1px black;border-collapse:collapse" >
    <tr>
        <td width="100">lodop</td>
        <td width="100">c-lodop</td>
        <td width="100">c-lodop</td>
    </tr>
    <tr>
        <td width="100" >text</td>
        <td width="100">html</td>
        <td width="100">html鹅鹅鹅饿鹅鹅鹅饿</td>
    </tr>
    <tr>
        <td width="100">lodop</td>
        <td width="100">c-lodop</td>
        <td width="100">html呜呜呜呜呜呜呜呜呜呜呜呜</td>
    </tr>
    </table>
    </div>
    <a href="javascript:prn1_preview()">打印预览关联</a><br>
    <script language="javascript" type="text/javascript">   
            var LODOP; //声明为全局变量 
        function prn1_preview() {
            LODOP=getLodop(); 
            LODOP.PRINT_INIT("");
            LODOP.SET_PRINT_PAGESIZE(1,1000,1500,"");
            LODOP.ADD_PRINT_TEXT(5,144,100,20,"内容");
            LODOP.ADD_PRINT_HTM(25,30,309,190,document.getElementById("div1").innerHTML);//第二个打印项
            LODOP.ADD_PRINT_TEXT(0,0,89,20,"劳道谱");
            LODOP.SET_PRINT_STYLEA(0,"LinkedItem",2);//关联第二个打印项
            LODOP.ADD_PRINT_TEXT(0,266,57,20,"梦泰尔");
            LODOP.SET_PRINT_STYLEA(0,"LinkedItem",2);//关联第二个打印项
    //        LODOP.PRINT_DESIGN();
            LODOP.PREVIEW();    
        };
    </script> 
    </body>

    图示:

    如图,有三个文本项,一个超文本打印项,超文本打印项里面的内容其实是一个表格,在一个任务中,打印项语句的先后顺序就是打印项的排序,如该代码中,第一个打印项是text文本项,它的序号是1,第二个打印项是htm超文本项,它的序号是2,第三个和第四个文本项的序号分别是3和4。

    要想第三个文本项,和第四个文本项都紧跟着表格输出,可以都关联表格,表格这个超文本打印项的序号是2,所以给这第三、第四个文本项加关联,关联到2,这样其top和left就是和表格这个超文本打印项的相对位置了。

    HTM这个超文本打印项,距离纸张顶边距是25,左边距是30。
    打印项高度是190,虽然ADD_PTINT_HTM打印项高度是190,但是其内容可能不是。关联后的是超文本实际内容的高度。
    如图,第三个TEXT打印项的顶边距是0,左边距是0,如果不加关联,则会是相对于纸张的,在纸张最左上角输出,而关联到HTM这个超文本打印项后,就不再是在纸张中的距离,而是和上面HTM打印项的,如图,可以在表格最下方输出,而且左边距也和表格一样。
    第四个的言行也是关联HTM,这个也是紧贴着HTM下方,左边距266相对于纸张也变成了HTM的左边距加上266的数值。也就是的顶边距和左边距都变成了相对位置。

  • 相关阅读:
    tcp/ip协议
    soap协议
    JS引擎运行js过程
    clear:both可以清除浮动的原理(给子元素设置clear:both相当于给它自动设置了1个mrgin-top外边距从而可以撑开父盒子高度)
    BFC详解
    圣杯布局和双飞翼布局的作用和区别
    flex布局之space-evenly兼容性不好,巧用space-between实现space-evenly效果
    css巧用 transform的 rotate属性得到三角形箭头(取代iconfont的字体符号)
    li 鼠标悬停抖动问题
    小米官网首页商品列表鼠标悬停动画和阴影效果
  • 原文地址:https://www.cnblogs.com/huaxie/p/10870329.html
Copyright © 2020-2023  润新知