1、安装

npm install vue-print-nb --save

2、在main.js中配置

import Print from 'vue-print-nb'

Vue.use(Print)

3、在公共类js下,新建一个watermask.js,代码如下


export default {//局部水印addWaterMark() {// const strArr = `${localStorage.getItem(//         "loginUserName"//     )}${localStorage//         .getItem("logunUserPhone")//         .slice(7, 11)}[${new Date()}]`;const strArr = `${localStorage.getItem("loginUserName")}`;let ctx = document.createElement("canvas");ctx.width = 250;ctx.height = 100;ctx.style.display = "none";let cans = ctx.getContext("2d");cans.rotate((-20 * Math.PI) / 180);cans.font = "16px 宋体";cans.fillStyle = "#ccc";cans.textAlign = "left";cans.textBaseline = "Middle";cans.fillText(strArr, 0, 100);cans.save();return ctx.toDataURL();}
}

4、在页面中使用

<template><div id="printMe"  :style="{backgroundImage:(showBa ?`url(${orgBackground})`:'')}">需要打印的内容,给div加id为printMe,给打印按钮加v-print="printObj",并给div设置打印背景
</div>//打印按钮
<el-button type="primary" @click="handlePrint">打印</el-button>
<el-button ref="printBtn" v-show="false" type="primary" v-print="printObj">打印</el-button></template><script>
import watermark from "@/common/js/watermask"
export default {data() {return {orgBackground: "",showBa:false,printObj: {id: "printMe",closeCallback:()=>{this.showBa=false   // 取消或者打印成功,返回页面时不显示水印console.log(this.showBa)}},}},methods:{// 打印按钮,打印时显示水印handlePrint(){this.showBa=truethis.$refs.printBtn.$el.click()},},mounted(){localStorage.setItem("loginUserName", 'admin');this.orgBackground = watermark.addWaterMark();},
}
</script><style media="print">@page{size: auto;margin:5mm 6mm;}
</style>

5、打印的官方属性

6、网址vue-print-nb网址https://www.npmjs.com/package/vue-print-nb

最后讲个给页面加全部水印

1、在公共类js下,新建一个watermark.js,代码如下

let watermark = {}let setWatermark = (str) => {let id = '1.23452384164.123412416';if (document.getElementById(id) !== null) {document.body.removeChild(document.getElementById(id));}//创建一个画布let can = document.createElement('canvas');//设置画布的长宽can.width = 320;can.height = 220;let cans = can.getContext('2d');//旋转角度cans.rotate(-25 * Math.PI / 180);cans.font = '300 18px 宋体';//设置填充绘画的颜色、渐变或者模式cans.fillStyle = '#bbb';//设置文本内容的当前对齐方式cans.textAlign = 'left';//设置在绘制文本时使用的当前文本基线cans.textBaseline = 'Middle';//在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)cans.fillText(str, can.width / 8, can.height / 2);let div = document.createElement('div');div.id = id;div.style.pointerEvents = 'none';div.style.top = '40px';div.style.left = '180px';div.style.position = 'fixed';div.style.zIndex = '100000';div.style.width = document.documentElement.clientWidth + 'px';div.style.height = document.documentElement.clientHeight + 'px';div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat';document.body.appendChild(div);return id;
}// 该方法只允许调用一次
watermark.set = (str) => {let id = setWatermark(str);setInterval(() => {if (document.getElementById(id) === null) {id = setWatermark(str);}}, 500);window.onresize = () => {setWatermark(str);};
}export default watermark;

2、在页面中引入

<script>
import Watermark from '@/common/js/watermark'
export default {data() {return {contactName: "张三",contactPhone:"12345678901",}},created() {Watermark.set(this.userName+this.contactPhone.substr(-4))},destroyed(){Watermark.set(''); //为了清除页面返回时,其它页面也有水印}
}
</script>

vue-print-nb的使用,没打印时没水印,打印预览页面设置水印相关推荐

  1. Vue -print - nb 打印插件 使用详解 以及连打操作

    Vue -print - nb 打印插件 #安装 npm install vue-print-nb --save #在main.js 全局引用 import Print from 'vue-print ...

  2. h5打印时如何控制打印区域(基于jquery.PrintArea.js实现)

    h5打印时如何控制打印区域(基于jquery.PrintArea.js实现) javaSript 的 window.print() 打印时打印范围不可控制,而jquery.PrintArea.js可以 ...

  3. 【web小票打印】谷歌浏览器跳过预览直接打印(lodop)

    因项目需求,需要在网页端直接打印订单小票,然后客户给寄了一台得力热敏票据打印机.lowlowlow,人家都是什么云打印了.... 上产品官网溜达了一圈啥也没给,就给了驱动安装.装完在打印的时候选择该打 ...

  4. vue中将base64的pdf文件流转换成pdf并预览(二)——base64转PDF工具的使用

    vue中将base64的pdf文件流转换成pdf并预览(二)--base64转PDF工具的使用 Base64 to PDF官网 1.官网 官网--https://www.ipvoid.com/base ...

  5. vue中将base64的pdf文件流转换成pdf并预览(一)——vue-pdf组件的基本使用

    vue中将base64的pdf文件流转换成pdf并预览(一)--vue-pdf组件的基本使用 vue-pdf组件官网--https://www.npmjs.com/package/vue-pdf 1. ...

  6. html 打印时隐藏,html 打印相关操作与实现详解

    原理为调用 window.print() 方法,但是该方法只能对当前页面全部打印,所以有了以下方案来解决局部打印 1: 利用 iframe 将需要打印的元素和样式注入 再调用打印 // 示例代码 fu ...

  7. html打印时显示不全,打印表格时内容显示不完整怎么办?四种方法解决WPS不完整问题...

    在打印表格时,偶尔出现表格内容显示不完整的状况,这是什么原因导致的呢?出现这样的情况应该如何处理?接下来为大家介绍几种处理方法,可以对应情况来解决. 一.取消打印区域 打印表格显示不完整,有可能是因为 ...

  8. lombok @Data注解打印时不会打印父类属性

    1.在切面中打印日志时,并没有打印出父类属性,多方查找后,得到如下结果 @Data注解默认只会打印当前类属性,并不会打印父类属性 解决方案如下 1)打印时格式化 Object[] args = pjp ...

  9. 基于vue element-ui 封装上传图片组件 功能:上传,删除,预览,上传图片水印,拖拽排序,上传进度条等

    学习目标: 我们在开发后台时肯定避免不了上传图片的功能 例如: 上传图片回显 上传完成 : 预览查看 , 删除等 如果是图片列表,还可能让你拖动图片排序 有的后台项目可能要给图片添加水印,添加标记 有 ...

最新文章

  1. 最后一周 | 微生物组-宏基因组分析第8期(报名直播课免费参加线下2020.7)
  2. Windows Phone 7知识锦分享
  3. 数据映射--跳表(skiplist)
  4. 玩转ECS第6讲 | 弹性计算Region化部署和跨可用区容灾介绍
  5. kubernetes-Deployment
  6. C++网络编程快速入门(一):TCP网络通信基本流程以及基础函数使用
  7. JS 判断变量类型(判断数据类型、typeof)
  8. instagram架构_通过创建Instagram副本学习Laravel
  9. db2 v9.7 tablespace_state -“表空间状态”监视器元素 0x0400
  10. 做海外市场,如何在Facebook20多亿用户中分一杯羹?
  11. win10系统计算机物理地址,Win10如何修改物理地址?Win10修改网卡物理地址(MAC)的两种方法...
  12. Matlab 心形函数
  13. 马尔可夫不等式 Markov's inequality
  14. 遮罩和蒙版有什么区别,视频遮罩怎么用
  15. 百度面试(热乎的):地球上一个人往南走1公里,往西走1公里,往北走1公里后回到原点,问地球上满足此点的个数?
  16. fastadmin 使用switch 点击修改无反应 提示“未更新任何行”
  17. uniapp H5使用video标签直播失败报错
  18. 如何才能够在线将录音转换成文字
  19. MFC 图片按钮的实现
  20. 2021年起重机司机(限桥式起重机)复审考试及起重机司机(限桥式起重机)作业考试题库

热门文章

  1. linux中nginx.conf的文件路径以及重启nginx的方法
  2. 工程化软件开发的原则和实践浅谈(PPT)
  3. 网页JS自动化脚本(七)使用在线jQuery来操作元素
  4. cm-14.1 Android系统定制(一):添加以太网上网功能
  5. 还怕搞不定秋招?Java8年架构大能分享“Java面试突击秋招手册“,背完轻松应付面试官,再拿不到offer真不怪我了
  6. windows c++线程CreateThread操作临界数据(EnterCriticalSection)
  7. java usbkey数字证书_Java 密钥库和数字证书
  8. NLP中的样本不平衡、长句问题
  9. MATLAB 基础知识 数据类型 函数句柄 将一个函数传递到另一个函数
  10. Java 字符串转16进制数