前端打印功能、js打印功能、vue打印功能、vue 您所在的位置:网站首页 vue表单显示不全 前端打印功能、js打印功能、vue打印功能、vue

前端打印功能、js打印功能、vue打印功能、vue

2023-08-28 22:21| 来源: 网络整理| 查看: 265

今天做了一个发票打印的功能,原生方法在下面,我使用了vue,整理网上的资料,都逃不过window.print();的,

先上vue的打印方式:

插件:

1、print-js

优点:活跃度高,插件体积小 缺点:我没看怎么使用,哈哈哈哈

2、vue-print-nb

优点:我看配置后可以多页打印, 缺点:活跃度低,插件大小很大

3、vue-print-nb-jeecg

实不相瞒,我使用的人家集成的模板,哈哈哈哈哈哈哈,直接有这个,就很舒服

注意:上面这三个,不论怎么样使用都更改了很多配置,比如我安装了vue-print-nb,然后又卸载了,项目运行不起来了,你可以把node_modules卸载掉重新安装 1、print-js

直接传送门吧任意门

2、vue-print-nb(table太多,打印不全问题,直接改用第一种)

1、第一种方法 1,安装 npm install vue-print-nb --save 2,引入 安装好以后在main.js文件中引入

import Print from 'vue-print-nb' Vue.use(Print); //注册

3,现在就可以使用了

      明月照于山间       清风来于江上          打印

4.如需通过链接地址打印:window.location.href = airway_bill; airway_bill为链接地址。

5.如果内容打印不全,在打印操作时点击更多设置,然后设置缩放。(还有一种情况缩放也不行,下面说)

第二种方法:手动下载插件到本地 插件地址:https://github.com/xyl66/vuePlugs_printjs

1.在src下新建文件夹plugs,将下载好的print.js放入plugs文件夹下,然后操作如下

import Print from '@/plugs/print' Vue.use(Print) // 注册        打印内容     不要打印我    this.$print(this.$refs.print) // 使用

2.注意事项 需使用ref获取dom节点,若直接通过id或class获取则webpack打包部署后打印内容为空 3.指定不打印区域

方法1. 添加no-print样式类

不要打印我 方法2. 自定义类名 不要打印我 this.$print(this.$refs.print,{'no-print':'.do-not-print-me-xxx'}) // 使用 vue-print-nb 打印table,数据很多,打印不全问题

使用 vue-print-nb 打印table,数据是后端接口返回的动态数据, 当时数据很多时,打印预览的表格还是只有一页,如下图: 在这里插入图片描述 数据太多,中间省略未截图。 打印预览如下,只有一页: 在这里插入图片描述 看到vue实现打印功能的两种方法说显示不全的设置缩放,但是那么多条数据缩放到一页显示也太小了吧,能自动换页不?哎,换用他说的第二种方法vuePlugs_printjs vue打印插件,试了,依然是只显示一页内容 这时候就要:改用第一种插件了

const style = '@page { margin: 0 } @media print { }'//自定义样式 printJS({ printable: 'printContent',//要打印内容的id type: 'html', style: style, scanStyles: false }) 原生js

来自人家整理的晴思梦语

打印方式一:

1.首先在head里面加入下面一段js代码:

function preview(fang) { if (fang ";//设置打印开始区域 eprnstr="";//设置打印结束区域 prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取html prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html window.document.body.innerHTML=prnhtml; window.print(); window.document.body.innerHTML=bdhtml; } else { window.print(); } }

2.然后在所需要打印的代码,用 和 包围着,如下:

...

3.最后加上一个打印的按钮

打印方式二:

1.javascript中方法为:

function dayin(){ var userAgent = navigator.userAgent.toLowerCase(); //取得浏览器的userAgent字符串 if (userAgent.indexOf("trident") > -1){ alert("请使用google或者360浏览器打印"); return false; }else if(userAgent.indexOf('msie')>-1){ var onlyChoseAlert = simpleAlert({ "content":"请使用Google或者360浏览器打印", "buttons":{ "确定":function () { onlyChoseAlert.close(); } } }) alert("请使用google或者360浏览器打印"); return false; }else{//其它浏览器使用lodop var oldstr = document.body.innerHTML; var headstr = ""; var footstr = ""; //执行隐藏打印区域不需要打印的内容 document.getElementById("otherpho").style.display="none"; //此处id换为你自己的id var printData = document.getElementById("printdivaa").innerHTML; //获得 div 里的所有 html 数据 document.body.innerHTML = headstr+printData+footstr; window.print(); //打印结束后,放开隐藏内容 document.getElementById("otherpho").style.display="block"; document.body.innerHTML = oldstr ; } }

2.页面内容如下:

... ... ...

3.页面中放置一个打印按钮:

打印 打印方式三(此方式会重新打开一个浏览器窗口):

1.javascript中方法为:

//打印操作 function print() { var userAgent = navigator.userAgent.toLowerCase(); //取得浏览器的userAgent字符串 if (userAgent.indexOf("trident") > -1) { alert("请使用google或者360浏览器打印"); return false; } else if (userAgent.indexOf('msie') > -1) { var onlyChoseAlert = simpleAlert({ "content" : "请使用Google或者360浏览器打印", "buttons" : { "确定" : function() { onlyChoseAlert.close(); } } }) alert("请使用google或者360浏览器打印"); return false; } else {//其它浏览器使用lodop var oldstr = document.body.innerHTML; var headstr = ""; var footstr = ""; //执行隐藏打印区域不需要打印的内容 document.getElementById("otherpho").style.display="none"; var printData = document.getElementById("studentPhoTable").innerHTML; //获得 div 里的所有 html 数据 var wind = window.open("", "newwin", "toolbar=no,scrollbars=yes,menubar=no"); wind.document.body.innerHTML = headstr + printData + footstr; wind.print(); //打印结束后,放开隐藏内容 document.getElementById("otherpho").style.display="block"; wind.close(); window.document.body.innerHTML = oldstr; } }

2.页面内容如下:

... ... ...

3.页面中放置一个打印按钮:

谨记:javascript中方法的名称千万不要命成function print()



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有