lodop多页-打印-分组_lodup分组打印-程序员宅基地

技术标签: html5  js  javascript  

 //打印预览
    printPreview:function() {
        // console.log(this.grid.data);
        var LODOP;
        LODOP = getCLodop();
        this.CreateOneFormPage();
        LODOP.PREVIEW();
    },
    //分组(区分,每页,展示不同的类型下的所有数据)
    groupBy:function(list, fn){
        const groups = {};
        list.forEach(function (o) {
            const group = JSON.stringify(fn(o));
            groups[group] = groups[group] || [];
            groups[group].push(o);
        });
        // return Object.keys(groups).map(function (group) {
        //     return groups[group];
        // });
        return groups;
    },
    
    CreateOneFormPage:function(){  

        var me = this;
        var groupData = me.groupBy(me.grid.data, function(link) {
             return link.Parameter
        })
        var LODOP;
        LODOP = getCLodop();     
        LODOP.PRINT_INIT("产品套材卡报表"); 
        var strBodyStyle = "<style>" + document.getElementById("style1").innerHTML + "</style>";    

        var ProductObj = me.ProductListHtml();
        var count = 0;
        for (var i in groupData ) {
            var LinkedItem = count*3+1;
            count++;
            LODOP.ADD_PRINT_TABLE("15%", "2%", "96%", "70%", strBodyStyle + me.setTableHtml(groupData[i]));
            LODOP.SET_PRINT_STYLEA(0, "Vorient", 3);
            
            LODOP.ADD_PRINT_HTM('3%', "2%", "96%", "12%", strBodyStyle + me.topTable(i,count));

            LODOP.SET_PRINT_STYLEA(0, "ItemType", 1);
            LODOP.SET_PRINT_STYLEA(0, "LinkedItem", LinkedItem);

            LODOP.ADD_PRINT_HTM('85%', "2%", "96%", "5%",  me.footerTable());
            LODOP.SET_PRINT_STYLEA(0, "ItemType", 1);
            LODOP.SET_PRINT_STYLEA(0, "LinkedItem", LinkedItem);//LinkedItem从1开始,不一样

            LODOP.NewPageA();
        }
        // LODOP.ADD_PRINT_HTM('85%', "2%", "96%", "5%",  me.footerTable());
        // LODOP.SET_PRINT_STYLEA(0, "ItemType", 1);
        LODOP.SET_PREVIEW_WINDOW(0,0,0,0,0,""); 
        LODOP.SET_SHOW_MODE("LANDSCAPE_DEFROTATED",1);//横向时的正向显示
    },
    topTable:function(data,index){
        var me = this;
        var topHtml = '';
        topHtml = '<div id="TitleDiv'+index+'">'+
            '<div class="tableTitle">'+
               
            '</div>'+
            '<div style="display: flex;justify-content: space-around;font-size:12pt;">'+
                '<span>xx:'+me.dataRender(data,"SerialA")+'</span>'+
                '<span>xx:<span>'+me.dataRender(data,"Specifications")+'</span></span>'+
                '<span>xx:'+me.dataRender(data,"SerialB")+'</span>'+
                '<span>xx:'+mini.DateTransform(new Date())+'</span>'+
            '</div>'+
        '</div>';
        return topHtml;
    },
    setTableHtml:function(data){
        var me = this;
        var TableHtml = '';
        TableHtml = '<div id="tableDiv">'+
                '<table style="width:100%;" class="MsoTableGrid" border=1 cellspacing=0 cellpadding="5">'+
                    '<thead>'+
                        '<tr>'+
                            '<td style="width:80px;" >xx</td>'+
                            '<td style="width:80px;" >xx</td>'+
                            '<td style="width:80px;" >xx</td>'+
                            '<td style="width:60px;" >xx</td>'+
                            '<td style="width:40px;" >xx</td>'+
                            '<td style="width:60px;" >xx</td>'+
                            '<td style="width:140px;" >x</td>'+
                            '<td style="width:80px;" >xx</td>'+
                            '<td style="width:80px;" >xx</td>'+
                            '<td style="width:60px;">备注</td>'+
                        '</tr>'+
                    '</thead>'+
                    '<tbody >'+me.ProductListHtml(data)+'</tbody>'+
                '</table>'+
            '</div>';
        return TableHtml;
    },
    ProductListHtml:function(Items){
        var me =this;
        var ListHtml = '';
        // var Items = me.grid.data;
        var n = 1;
        if(!mini.isEmpty(Items)){
            for (var i = 0; i<Items.length; i++) {
                var Item = Items[i];
                ListHtml += '<tr><td>'+me.isValueEmpty(Item.BatchCode)+'</td> <td>'+me.isValueEmpty(Item.BorrowDrawingNo)+'</td>'
                         + '<td>'+me.isValueEmpty(Item.DrawingNo)+'</td> <td>'+me.isValueEmpty(Item.VehicleTimes)+'</td>'
                         + '<td>'+me.isValueEmpty(Item.Quantity)+'</td> <td>'+me.isValueEmpty(Item.Specifications)+'</td>'
                         + '<td>'+me.isValueEmpty(Item.Routes)+'</td> <td>'+me.isValueEmpty(Item.Weight1)+'</td>'
                         + '<td>'+me.isValueEmpty(Item.Weight2)+'</td> <td>'+me.isValueEmpty(Item.Note)+'</td></tr>';
            }
			//**不够一页数据,补充空行**
            var ItemsLength = Items.length>17 ? 17-(Items.length%17) : 17-Items.length;
            if(ItemsLength !==0 && ItemsLength !==17){
                for(var i = 0;i<ItemsLength;i++){
                    ListHtml +='<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>'
                }
            }
           
        }
        return ListHtml;
    },
    
lodop打印时展示页码

// LODOP.ADD_PRINT_HTM(1,600,300,100,"总页号:<font color='#0000ff' format='ChineseNum'><span tdata='pageNO'>第##页</span>/<span tdata='pageCount'>共##页</span></font>");

样式:

.MsoTable {
            width: 35cm;            
            text-align: center; 
            margin: 0 auto;       
        }        
        table.MsoTableGrid {         
            font-size:10.5pt;  
            border-colspan: colspan;  
            width:100%;   
            text-align: center;   
        }
        table.MsoTableGrid tr {
            line-height: 25px;
            height: 25px;
        }
        .tableTitle {
            font-size: 13.5pt;
            font-weight: bold;
            letter-spacing: 3px;
            line-height: 50px;
            text-align: center;
        } 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42768220/article/details/115123055

智能推荐

达观数据携手CCF举办第五届“达观杯”自然语言处理文本分类竞赛 ,开赛报名中!_第五届“达观杯”自然语言处理算法竞赛链接-程序员宅基地

文章浏览阅读343次。作为国内领先的智能文本处理企业,达观数据主办发起“达观杯”人工智能算法竞赛,每年一届,至今已成功举办四届。2021年,在CCF(中国计算机学会)自然语言处理专业委员会的特别支持下,第五届“达观杯”于7月正式拉开帷幕。本届“达观杯”为自然语言处理算法竞赛,围绕“基于大规模预训练模型的风险事件标签识别”的主题展开,积极推动国内NLP技术创新,努力拓展更多应用场景。赛题背景在大数据和人工智能技术加持下,不同行业的新兴风险控制手段也在高速发展。但这些风险信息散落在互联网的海量资讯中,如果可以及..._第五届“达观杯”自然语言处理算法竞赛链接

string.Format C#对字符串的格式化_asp mvc 怎么格式化货币符号-程序员宅基地

文章浏览阅读558次。【评论送书】机器学习、Spring MVC、Android CSDN日报20170508 ——《面试官谈游戏入行——面试和信仰》 CSDN技术直播:php实战微信公众号开发! string.Format对C#字符串格式化 标签: c#objectstringcbasic编译器2012-05-11 11:54 11748人阅读 评论(0)_asp mvc 怎么格式化货币符号

记一次 cdh6 service Connection refused 异常处理_cdh connectionrefused-程序员宅基地

文章浏览阅读5k次。cdh6 service启动遇到问题 :提示主机unhealthy打开日志显示的是............................Caused by: java.net.ConnectException: Connection refused (Connection refused).....................msg:Role not started due to unhealthy host...............................所有_cdh connectionrefused

(转)OpenResty(nginx+lua) 开发入门-程序员宅基地

文章浏览阅读129次。原文:https://blog.csdn.net/enweitech/article/details/78519398OpenResty 官网:http://openresty.org/ OpenResty - 中文官方站 http://openresty.org/cn/OpenResty 是一个nginx和它的各种三方模块的一个打包而成的软件平台。最重要的一点是它将lua/luaji..._cp: ‘html/’ and ‘/opt/openresty/nginx/html’ are the same file

网络带宽和质量测试小工具.iPerf3-程序员宅基地

文章浏览阅读7.6k次。网络图片最近在做监控视频系统建设和运维相关工作,其中有队友提出缺乏对网络线路带宽和质量的检查和监控手段。作为从业20多年的“资深”工程师,怎么能受得了“没办法”这样的结论呢,于是淡然推出iPerf3这个小工具。iPerf3是用于主动侦测IP网络上最大可实现带宽的工具。它支持时序、缓冲区、协议(TCP,UDP,SCTP与IPv4和IPv6)有关的各种参数。对于每个测试,它都会报告带宽,丢..._iperf3

【模板】Miller_Rabin 素数测试_miller-rabin 质数测试选数-程序员宅基地

文章浏览阅读530次。如同标题所述,Miller_Rabin 是用来测试一个数是否为素数的算法。然而,Miller_Rabin是有缺陷的,这就是它单次执行所得的结果并不完全正确,不过我们可以将这个算法多执行几次来让它的正确率趋近于 100%100%100\% 。ToolsToolsToolsFetmatFetmatFetmat 小定理:若 ppp 为素数,aaa 为正整数,且 (a,p)=1(a,p)=1(a..._miller-rabin 质数测试选数

随便推点

mask-RCNN 学习笔记1_mask rcnn的fps如何查看-程序员宅基地

文章浏览阅读776次。论文:https://arxiv.org/pdf/1703.06870.pdf摘要:我们提出了一个概念上简单,灵活,通用的对象实例分割框架。我们的方法有效地检测图像中的对象,同时为每个实例生成高质量的分割掩码。该方法称为Mask R-CNN,通过增加一个与现有分支并行的用于预测掩码对象的分支来增强Fast R-CNN的边界检测能力。 Mask R-CNN易于训练,比起Fast R-CNN只..._mask rcnn的fps如何查看

nginx if多条件判断_nginx if 多条件判断-程序员宅基地

文章浏览阅读5.1w次,点赞2次,收藏8次。原文出处:nginx 逻辑运算nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算 ,而且不支持if的嵌套语法,否则会报下面的错误:nginx: [emerg] invalid condition。我们可以用变量的方式来间接实现。要实现的语句:if ($arg_unitid = 42012 && $uri ~/thumb/){ echo "www_nginx if 多条件判断

ptgui创建全景图设置_使用Microsoft图像合成编辑器创建高级全景图-程序员宅基地

文章浏览阅读969次。ptgui创建全景图设置Do you enjoy making panoramas with your pictures, but want more features than tools like Live Photo Gallery offer? Here’s how you can create amazing panoramas for free with the Microsoft ..._image composite editor

C#高级编程笔记--.Net体系结构_c#界面高级编程-程序员宅基地

文章浏览阅读887次,点赞15次,收藏23次。例如,Visual Basic 2008的Integer实际上是一个32位有符号的整数,它实际映射为中间语言类型Int32。因此在中间语言代码中就指定这种数据类型。C#编译器可以使用这种类型,所以就不会有问题了。在源代码中,C#用关键字int来表示Int32,所以编译器就认为Visual Basic 2008方法返回一个int类型的值。通用类型系统不仅指定了基本数据类型,还定义了一个内容丰富的类型层次结构,其中包含设计合理的位置,在这些位置上,代码允许定义它自己的类型。_c#界面高级编程

无人机视觉挑战赛 | ICCV 2019 Workshop—VisDrone2019-程序员宅基地

文章浏览阅读4.3k次。VisDrone 2019The VisDrone 2019 Challenge will be held on the ICCV 2019 workshop "Visi..._visdrone2019

springcloud 前后端分离 登录用户信息获取_springcloud zuul 获取当前登录用户及用户名-程序员宅基地

文章浏览阅读8.7k次。http://www.cnblogs.com/domi22/p/9248536.html_springcloud zuul 获取当前登录用户及用户名

推荐文章

热门文章

相关标签