print.js 一个javascript库,可以实现打印功能

github地址

github地址: https://github.com/crabbly/print.js

官网地址

https://printjs.crabbly.com/

安装print

npm install print-js --save

在项目里面引用

<!-- button调用方法 -->
<el-button title="打印" @click="Toprint"><div><i class="iconfont kf-dayin"></i></div>
</el-button>
//在script里面引用print-js
import printJS from 'print-js'
//使用打印功能
//方法
Toprint() {var someJSONdata = [{name: 'John Doe',email: 'john@doe.com',phone: '111-111-1111'},{name: 'Barry Allen',email: 'barry@flash.com',phone: '222-222-2222'},{name: 'Cool Dude',email: 'cool@dude.com',phone: '333-333-3333'}]printJS({printable: someJSONdata,properties: ['name', 'email', 'phone'],type: 'json'})},

结果

也可以将print.js放如src文件夹内

在main.js引用print

import Print from './libs/Print/print'
Vue.use(Print)

print.js的代码

// 打印类属性、方法定义
/* eslint-disable */
const Print = function (dom, options) {if (!(this instanceof Print)) return new Print(dom, options);this.options = this.extend({'noPrint': '.no-print'}, options);if ((typeof dom) === "string") {this.dom = document.querySelector(dom);} else {this.isDOM(dom)this.dom = this.isDOM(dom) ? dom : dom.$el;}this.init();};Print.prototype = {init: function () {var content = this.getStyle() + this.getHtml();this.writeIframe(content);},extend: function (obj, obj2) {for (var k in obj2) {obj[k] = obj2[k];}return obj;},getStyle: function () {var str = "",styles = document.querySelectorAll('style,link');for (var i = 0; i < styles.length; i++) {str += styles[i].outerHTML;}str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";return str;},getHtml: function () {var inputs = document.querySelectorAll('input');var textareas = document.querySelectorAll('textarea');var selects = document.querySelectorAll('select');for (var k = 0; k < inputs.length; k++) {if (inputs[k].type == "checkbox" || inputs[k].type == "radio") {if (inputs[k].checked == true) {inputs[k].setAttribute('checked', "checked")} else {inputs[k].removeAttribute('checked')}} else if (inputs[k].type == "text") {inputs[k].setAttribute('value', inputs[k].value)} else {inputs[k].setAttribute('value', inputs[k].value)}}for (var k2 = 0; k2 < textareas.length; k2++) {if (textareas[k2].type == 'textarea') {textareas[k2].innerHTML = textareas[k2].value}}for (var k3 = 0; k3 < selects.length; k3++) {if (selects[k3].type == 'select-one') {var child = selects[k3].children;for (var i in child) {if (child[i].tagName == 'OPTION') {if (child[i].selected == true) {child[i].setAttribute('selected', "selected")} else {child[i].removeAttribute('selected')}}}}}return this.dom.outerHTML;},writeIframe: function (content) {var w, doc, iframe = document.createElement('iframe'),f = document.body.appendChild(iframe);iframe.id = "myIframe";//iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";iframe.setAttribute('style', 'position:absolute;width:0;height:0;top:-10px;left:-10px;');w = f.contentWindow || f.contentDocument;doc = f.contentDocument || f.contentWindow.document;doc.open();doc.write(content);doc.close();var _this = thisiframe.onload = function(){_this.toPrint(w);setTimeout(function () {document.body.removeChild(iframe)}, 100)}},toPrint: function (frameWindow) {try {setTimeout(function () {frameWindow.focus();try {if (!frameWindow.document.execCommand('print', false, null)) {frameWindow.print();}} catch (e) {frameWindow.print();}frameWindow.close();}, 10);} catch (err) {console.log('err', err);}},isDOM: (typeof HTMLElement === 'object') ?function (obj) {return obj instanceof HTMLElement;} :function (obj) {return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string';}};const MyPlugin = {}MyPlugin.install = function (Vue, options) {// 4. 添加实例方法Vue.prototype.$print = Print}export default MyPlugin

使用打印功能

<el-button title="打印" @click="print"><div><i class="iconfont kf-dayin"></i></div>
</el-button>style="height:100%;width:100%;overflow:auto;"ref="templateContainer"
></div>
//打印
print(index, row) {this.$print(this.$refs.templateContainer)console.log(index, row)}

结果

这是我的要打印的数据

这是打印的

修改打印的范围

因为打印的是table,使用我们可以使用样式控制table的显示区域,只有显示的部分才会打印,隐藏起来的不打印
如下所示:对比之前的图,只把需要的内容显示,其他空白部分用样式隐藏起来

page-break-after:always 实现分页打印

页面效果

html

在页面上显示:

使用page-break-after:always可以实现分页打印的效果
打印代码:

printable是标签的id
Toprint() {printJS({printable: 'printJS-table',type: 'html',scanStyles: false})},

添加打印机

因为电脑自带的打印机只有一些常见的纸张,无法自定义纸张大小,所以,自己安装一个打印机,用来调整纸张大小

网盘地址:
链接: https://pan.baidu.com/s/1WOSUXZQ3eocB2uCey6k-Fw提取码: g48d
1.安装下面这个文件即可

2.选择打印机,弹出打印文件层,点击目标打印机,选择查看更多

3.进入选择打印机页面,点击管理

4.点击打印机

5.选择刚刚安装的打印机,点击管理

6.后面点击打印首选项,然后选择高级,点击编辑自定义页面,最后调整自己需要的页面大小




vue使用print.js实现打印功能,以及添加打印机相关推荐

  1. 使用vue-print.js远程打印功能

    安装print-js npm install print-js --save main挂载 import Print from 'vue-printjs'Vue.use(Print) 使用 需要打印的 ...

  2. VUE整合VUE-PRINT-NB实现前端打印功能

    VUE整合VUE-PRINT-NB实现前端打印功能 插件安装 npm install vue-print-nb --save 插件安装时最好在package.json中同时加入依赖信息,便于项目上其他 ...

  3. vue封装打印插件print.js实现打印组件功能

    代码 插件地址:https://github.com/xyl66/vuePlugs_printjs 1. 打印插件属性方法 定义-print.js // 打印类属性.方法定义 /* eslint-di ...

  4. vue使用print.js打印插件

    任务:解决vue页面局部打印功能 print.js插件,可以打印 html.pdf.json数据 官网:https://printjs.crabbly.com/ 一个整理的很好的讲解:https:// ...

  5. 前端使用print.js实现打印

    前言 项目中经常会用到前端调用浏览器打印的功能,也经常会遇到一些问题,写这篇文章是为了更好的梳理一下相关内容.下面的内容基于vue. 如果需要用到前端生成二维码可以看我的这篇文章:在vue项目中使用q ...

  6. Vue使用PrintJS实现页面打印功能

    说明 大家好,我是呆小杰,收到一个需求,要求实现 拼接成表格并能一键回填数据并能打印成A4大小(或者生成pdf)的功能. 实际上回填数据以及拼接部分都很简单,稍微陌生的就是调用浏览器打印功能并将页面内 ...

  7. layui js 自定义打印功能实现

    打印功能的实现往往是新建一个页面,然后在新建页面中画出你想要的效果,然后调用浏览器的打印功能进行打印 项目依赖: layui jquery 记得换layui和jquery引入路径 完整项目代码: &l ...

  8. Vue实现PDF导出和打印功能

    在Vue页面上实现PDF导出和打印功能依赖于两个npm插件,分别为vue-to-pdf和vue-easy-printer. 安装命令: npm i vue-to-pdf --save npm i vu ...

  9. window.print()前端实现打印功能

    方法介绍 window.print()方法用于打印当前窗口的内容. 默认打印页面中body里的所有内容. 调用 print() 方法会产生一个打印预览弹框,让用户可以设置打印配置. 1. 打印方法 1 ...

最新文章

  1. 一流科技完成5000万人民币A轮融资,高瓴创投独家领投
  2. Long-read human genome sequencing and its applications
  3. 前端开发学习笔记 - 1. Node.JS安装笔记
  4. 一个简单的blog系统(九) 增加标签和标签页面
  5. mysqldumpslow基本使用
  6. 在CDS(Core Data Services)中使用DCL(Data Control Language)
  7. 计算从ios照片库中选取的图片文件大小
  8. 正则表达式--内功心法
  9. CABAC基于上下文的自适应二进制熵编码
  10. Microsoft edge升级之后收藏夹内容丢失_等了这么久,Edge 终于成为我的默认浏览器...
  11. 【渝粤题库】陕西师范大学202221保险学Ⅱ 作业(高起本、专升本)
  12. S3C6410 SD Card一键烧写 WINCE 6.0
  13. C语言程序设计作业——摘苹果
  14. Objective C范型
  15. linux系统修改时区
  16. java特征向量计算_Java与Python计算特征向量的区别
  17. Windows PC上创建大数据职业技能竞赛实验环境之五--hadoop、hive和spark编程
  18. Openpyxl操作Excel教程
  19. 飞桨带你使用度量学习,提升人脸识别准确率
  20. CMS识别 -- whatweb

热门文章

  1. 1360 xth 的玫瑰花
  2. Adobe Premiere Rush v1.1 中文特别版 Mac 后期视频编辑软件
  3. 2021年熔化焊接与热切割考试总结及熔化焊接与热切割模拟考试
  4. 三星借用计算机宽带上网,三星S6怎么通过USB共享电脑宽带上网?
  5. poj1673——求三角形的垂心
  6. 使用ContentResolver共享数据-短信
  7. php数组用逗号相连,php逗号连接数组
  8. linux lun分区,Linux服务器新增LUN而不需重启的实现
  9. 前端小制作 Part.1---鼠标悬停导航栏特效
  10. 华为 P20 Pro 相机体验报告