一、最简单的方法
强制分页

<div style="page-break-after: always;"></div>

二、复杂一点的方法:
1.可填写打印张数,自动分页,在浏览打印中设置纸张大小、边距及缩放调整位置,使打印页面居中。
缺点:打印分页不稳定,没有自适应,需自己调整大小位置
如图所示


2.详细代码如下

<!-- 标签弹窗 --><Modal width="250" :mask-closable="false" v-model="modalShow" title="标签打印"><Table stripe :columns="modal_title" :data="modal_data"></Table><div slot="footer"><Button type="primary" @click="close">关闭</Button></div></Modal>
<!-- 标签打印 --><Modal width="420" v-model="modalPrintShow" title="送货单"><div id="printContent" style="width:420px;"><div v-for="(item,i) in arrList"><div class="flex-c"><div style="font-size:15px;color: #000;font-family:'黑体';font-weight:500;"><span>浙江金华</span><span style="margin-left:10px;">物料标签卡</span></div><vue-qr :text="`${modalNameList.materialNum}##${modalNameList.qty}##${modalNameList.suppCode}##${modalNameList.billNum}##${modalNameList.entryId}`" :size="45" :margin="5"></vue-qr></div><div style="margin:0px 0px 10px 0px;display:flex;justify-content:center;"><table border="1" class="printTable"><tr><td>供应商</td><td colspan="5">{{modalNameList.supp}}</td></tr><tr><td>单据编号</td><td colspan="5">{{modalNameList.billNum}}</td></tr><tr><td>品名</td><td colspan="5">{{modalNameList.materialName}}</td></tr><tr><tr><td>物料编码</td><td colspan="5">{{modalNameList.materialNum}}</td></tr><td>交货日期</td><td style="width:110px;" colspan="2">{{modalNameList.deliveryDate}}</td><td>数量</td><td style="width:110px;" colspan="2">{{modalNameList.qty}}</td></tr><tr><td>申报部门</td><td colspan="2">{{modalNameList.applyDeptName}}</td><td>申请人</td><td colspan="2">{{modalNameList.applyPersonName}}</td></tr><tr><tr><td>备注</td><td colspan="5">{{modalNameList.remark}}</td></tr></table></div></div></div><div slot="footer"></div></Modal>
<script>
import '@/assets/js/jquery-vendor'// 方法 2
import 'jQuery.print' // 方法 2
import printHtml from '@/components/print.js'//引入封装打印的文件★★★★★
import VueQr from 'vue-qr';//引入二维码
export default{components: {VueQr},
}
data(){return{arrList:[],modalNameList:{},modal_title:[{title: "打印张数",width: 120,render: (h, params) => {let arr1 = [h("InputNumber", {props: {'active-change':false,value: 1,min:1,},on: {input: (val) => {this.modal_data[params.index].boxNumber = val;params.row.boxNumber = val},},}),];return h("div", arr1);},},{title: "操作",width: 80,fixed: "right",render: (h, params) => {let arr1 = [h("Button",{props: {type: "primary",size: "small",},on: {click: () => {let d = params.row // 单行数据this.bqPrint(d)}},},"打印"),];return h("div", arr1);},},],}
}
methods(){//打印★★★★★bqPrint(d){this.arrList = []//分页的空数组,里面有几个对象就有几页this.modalNameList = dlet num = d.boxNumber//num是填写的打印页数let obj = {num:num}for (let i = 0; i < num; i++) {this.arrList.push(obj)}// this.modalPrintShow = truethis.$nextTick(() => {//this.$nextTick是强制刷新页面,防止打印的内容为空setTimeout(function () {//定时器延时是等待页面数据刷新完在打印let newstr = document.getElementById("printContent").innerHTML//newstr为打印的页面printHtml(newstr)//调用引入的文件方法printHtml},500)})},
}
</script>

3.printHtml 封装文件

export default function printHtml (html) {let style = getStyle()let container = getContainer(html)document.body.appendChild(style)document.body.appendChild(container)getLoadPromise(container).then(() => {window.print()document.body.removeChild(style)document.body.removeChild(container)})
}// 设置打印样式
function getStyle () {let styleContent = `#print-container {display: none;
}
@media print {body > :not(.print-container) {display: none;}html,body {margin: 0 0.2cm;display: block !important;height:auto;}#print-container {display: block;}@page {margin: 0.25cm 0;}
}`let style = document.createElement('style')style.innerHTML = styleContentreturn style
}// 清空打印内容
function cleanPrint () {let div = document.getElementById('print-container')if (div) {document.querySelector('body').removeChild(div)}
}// 新建DOM,将需要打印的内容填充到DOM
function getContainer (html) {cleanPrint()let container = document.createElement('div')container.setAttribute('id', 'print-container')container.innerHTML = htmlreturn container
}// 图片完全加载后再调用打印方法
function getLoadPromise (dom) {let imgs = dom.querySelectorAll('img')imgs = [].slice.call(imgs)if (imgs.length === 0) {return Promise.resolve()}let finishedCount = 0return new Promise(resolve => {function check () {finishedCount++if (finishedCount === imgs.length) {resolve()}}imgs.forEach(img => {img.addEventListener('load', check)img.addEventListener('error', check)})})
}

vue页面打印可自动分页相关推荐

  1. work02_vue页面打印水印

    前言 项目生成公司水印是很普遍的需求,下面是vue项目生产水印的方法.话不多说,复制粘贴就可以马上解决你的需求 ①. vue页面打印水印[一] ①. 创建watermark.js文件 /** 水印添加 ...

  2. html表格分页打印样式,vue部分打印(多页自动分页、打印样式自定义、多页打印表格页面顶部带表头)...

    写在前面:注意打印表格时,若需要多页打印,则尽量使用原生table元素实现,这样在分页时每页顶部会带有表头,用户体验比较好 一.引用插件(在 main.js 中全局引入!!注意,需要修改源码,所以尽量 ...

  3. vue 项目中页面打印实现(去除页眉页脚)

    vue 项目中页面打印实现 参考文章: 13 Paged media 项目描述: 背景:框架vue.组件 element-ui,已有一个在用的后台管理系统 需求:现需在列表页面添加按钮-----打印协 ...

  4. vue html页面打印功能vue-print-nb

    vue项目中,HTML页面打印功能 组件vue-print-nb 源码: https://github.com/shengbid/vue-print, https://github.com/sheng ...

  5. Vue使用Print插件实现页面打印功能/打印列表

    Vue使用Print插件实现页面打印 示例 官网地址可以下载最新版 官网 下载 npm 安装 npm install print-js --save npm安装时将库导入项目(main.js) imp ...

  6. 小程序通过web-view访问的vue页面中点击无法跳转到小程序相关问题

    问题描述: 点击小程序中的一个按钮或者一个banner图片,通过小程序web-view组件到进入一个vue的页面中,在该vue页面中点击图片无法按照要求回到指定的小程序中,点击操作没有任何反应. 解决 ...

  7. vue 页面跳转404_Vue 项目棘手问题的解决方案

    1. 页面权限控制和登陆验证 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的.如果一个页面,有角色越权访问,这时就得做出 ...

  8. jqprint 分页打印_JS实现页面打印(整体、局部)

    我们在网页开发过程中经常会有打印页面的需求,通过JS来实现的方法有很多,这里我做了一个整理,供大家参考. 方式一:window.print() 整体打印 1打印 现在就轻松实现了页面的打印,但是这种方 ...

  9. vue-print-nb 实现页面打印(含分页打印)

    Web 实现页面打印 安装 官网地址:https://github.com/Power-kxLee/vue3-print-nb // 安装 打印组件 npm install vue-print-nb ...

最新文章

  1. 华为笔记本matebook13_为什么我不推荐华为Matebook 13给职场新人/小白?
  2. linux shell之数组
  3. win10 计算机休眠后无法唤醒,win10休眠后无法唤醒怎么办 win10系统怎么设置休眠时间...
  4. 2020牛客国庆集训派对day4 Arithmetic Progressions
  5. 快速排序quicksort算法细节优化(一次申请内存/无额外内存排序)
  6. 计算机c语言模拟考试,国家计算机二级c语言考试模拟题
  7. PHP读取表格都是精度,php 小数精度问题
  8. node.js入门及安装
  9. 最新版酒店小程序源码
  10. gp数据库主节点故障导致数据库无法重启报错
  11. 汽车用众大牌大屏幕导航仪凯立德地图升级方法
  12. python中国地图代码 上色_用Python绘制中国地图
  13. 2021年锅炉作业 (G)工业锅炉司炉 (G1)考试题库
  14. 谁来PK“百度局域网”
  15. 98大水灾,各国各地区对我国的捐助一览表
  16. 英语听力挑战微信小程序
  17. Java中的.length与.length()
  18. JavaScript----与函数大战的207个回合(来日再战)
  19. RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw2
  20. LKCOS安全芯片MAC计算方法简介(一):PBOC-MAC计算

热门文章

  1. 「过孔盖油」、「过孔塞油」
  2. 金蝶K3应收期初数据录入案例教程
  3. 树莓派4b乌班图服务器系统,【树莓派4B】8、树莓派软路由,Ubuntu18.04配置路由转发...
  4. easy发票查验软件开始试用了!
  5. “21天好习惯”第一期- 4 简单的壁纸爬虫
  6. 电子信息专硕学硕建议考研经验
  7. SQL server怎么查找某个时间段(多个时间段)的第一个值 或 最后一个值(这里举例查找每小时的第一个值)(Convert详细方法)
  8. (转载)应该对什么告警
  9. Linux系统用什么翻译软件,Linux安装翻译软件StarDict的步骤(自己的操作总结)
  10. Juniper-JNCIE-SP 分解实验6PE