lodop多页-打印-分组

 //打印预览
    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;
        } 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue中实现多页打印,你可以使用Lodop插件。Lodop是一个用于浏览器打印的第三方插件,可以提供丰富的打印功能。 以下是在Vue中使用Lodop实现多页打印的基本步骤: 1. 首先,你需要从Lodop官网下载Lodop插件并进行安装。 2. 在Vue项目中引入Lodop插件。你可以在`public/index.html`文件中添加以下代码: ```html <script src="http://localhost:8000/CLodopfuncs.js"></script> ``` 这里的`http://localhost:8000/CLodopfuncs.js`是Lodop插件的访问路径,请根据你的实际情况进行修改。 3. 在Vue组件中,你可以使用`this.$nextTick()`来确保Lodop插件已经加载完毕,然后在回调函数中进行打印操作。 例如,假设你有一个名为`printMultiPage`的方法来处理多页打印: ```javascript methods: { printMultiPage() { this.$nextTick(() => { // 使用Lodop插件进行打印操作 LODOP.PRINT_INIT("多页打印"); LODOP.SET_PRINT_PAGESIZE(1, 'A4', 0, 0); // 循环添加需要打印的内容,可以根据需要进行调整 for (let i = 0; i < 3; i++) { LODOP.NewPage(); LODOP.ADD_PRINT_TEXT(50, 50, 200, 30, `第 ${i+1} 页内容`); } LODOP.PREVIEW(); // 预览打印 // 可以使用其他方法进行打印,如LODOP.PRINT()直接打印等 }); } } ``` 4. 在Vue模板中添加一个触发多页打印的元素,例如一个按钮: ```html <button @click="printMultiPage">多页打印</button> ``` 现在,当用户点击"多页打印"按钮时,Lodop插件会根据你的设置进行多页打印操作。 请注意,以上代码仅为示例,你需要根据自己的需求进行适当的调整和修改。确保Lodop插件已正确安装和引入,并且在使用时可以根据实际情况设置打印内容和样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值