样式丢失

因为正常页面开发时,为避免样式污染,style标签都会加scoped属性,所以导致,打印后无法识别在style标签下设置的样式
解决办法:添加一个新的style不加scoped, 这这里添加样式,切记外层包上当前页面的唯一标签,避免污染其他页面样式

<style lang="less">#blueprintContent {.textarea-qr {padding-top: 10px;border: none;width: 400px;line-height: 45px;resize: none;background-color: transparent;}}
</style>

打印局部,内有canvas时,canvas过大,会有一页空白

打印的大概结构为:

 <div id="blueprintContent" '}"><canvas id="blueprintCanvas"></canvas></div>

blueprintContent 原页面设置的时display: inline-block, 宽度被canvas撑开,但打印时,没有读取到这个样式,默改成了block,且宽度为100%
改成

<style lang="less">#blueprintContent {display: inline-block !important;}
</style>

局部打印,内有canvas, canvas过大时,展示不全

实际上展示不全,并不是被截取了,而是打印页面,视觉效果没有完全展示,我们可以通过手动设置缩放,来让图片完全展示
如图

如果产品要在进入页面默认展示全部,可以在打印前将canvas转化成图片 然后通过控制图片的百分比来实现图片全部展示

代码

<div  v-print="print">打印<><div id="blueprintContent" '}"><img id="imgConvas" src="" alt=""><canvas id="blueprintCanvas"></canvas></div>data () {let _vue = thisreturn {print: {id: 'blueprintContent',closeCallback () {// 关闭了打印_vue.removeImg()},clickMounted () {// 点击打印_vue.creatImg()}}}} methods: {// 根据画布生成图片,以便打印时使用图片(解决canvas过大时 打印会显示不全)creatImg () {let mycanvas = document.getElementById('blueprintCanvas')// 获取画布的父对象(div)let parent = mycanvas.parentElementlet image = mycanvas.toDataURL('image/png')// 找到img图片对象元素let img = document.getElementById('imgConvas')img.setAttribute('style', 'display: block')// 将画布生成的图片内容给img图片对象元素img.src = imagethis.mycanvas = mycanvasparent.removeChild(mycanvas)},removeImg () {let parent = document.getElementById('blueprintContent')// 恢复画布的内容parent.appendChild(this.mycanvas)// 将生成的图片内容从到画布所在父元素的内容里删除let img = document.getElementById('imgConvas')img.setAttribute('style', 'display: none')}}<style lang="less">#imgConvas{width: 100%;}</style>

这样就可以默认显示100%, 但同样也会有弊端,就是当调节打印缩放时,放大后,仍然为100%,不会被放大

参考
http://t.zoukankan.com/scallop-p-14184580.htm
https://blog.csdn.net/LizequaNNN/article/details/122438389
https://blog.csdn.net/liangyiyiliang/article/details/124451553

vue-print-nb实现打印问题总结相关推荐

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

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

  2. vue print 解决针式打印机打印失败不清晰的问题

    针式打印机只能识别一种字体和一种颜色 @media print { #printId{ font-family: Microsoft YaHei !important; color: #000 !im ...

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

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

  4. window.print()实现局部打印及遇到的问题

    window.print()实现局部打印及遇到的问题 公司的一个后台管理系统需要实现打印一个签收单,我选择用window.print()实现打印,但是遇到了一些问题:需求实现的效果: 打印时需要隐藏顶 ...

  5. window.print() 前端页面打印与预览PDF

    window.print()打印是浏览器自带的打印,实现原理是将html转换为pdf可以在线预览打印或者导出pdf,在任何网页上可通过Ctil+p快捷键调出浏览器打印程序,它可将整个网页打印出来,在我 ...

  6. VUE 集成 LODOP插件打印

    VUE 集成LODOP插件打印 VUE 集成LODOP插件打印 Lodop.C-Lodop使用说明及样例 VUE简单使用lodop 1.创建LodopFuncs.js文件 2.在打印功能vue页面引入 ...

  7. 【Python】解决print不能立即打印的问题

    1.问题描述 在Python中使用print打印hello world时,终端不显示 def hello():print("hello world!") 2.原因 因为标准输入输出 ...

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

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

  9. python可以直接打印中午吗_Python print不能立即打印的解决方式

    1.问题描述 在Python中使用print打印hello world时,终端不显示 1 2def hello(): print("hello world!") 2.原因 因为标准 ...

  10. 使用window.print()方法分页打印

    使用window.print()方法分页打印 只需要在每页中增加以下样式属性 style="page-break-after:always" 例如 <div style=&q ...

最新文章

  1. HDU1402(FFT入门)
  2. UE4全景插件Nvidia Ansel Photography
  3. tomcat架构Pipeline和valve技术
  4. 点击按钮出现图片_坪山电动车上牌丨部分手机点击拍摄按钮,页面没有反应,无法拍摄人脸图片或上传照片,为什么?...
  5. vue开发黑科技--利用引用类型的值处理复杂数据的编辑
  6. 3.改变 HTML 内容
  7. java平面_java知识点整理
  8. Node.js_1.1
  9. 日历插件bootstrap-datetimepicker的使用感悟
  10. 拓扑次序(Topological Order)
  11. 《剑指offer》Java版全系列题解(2021版,持续更新!)
  12. 3星|《未来公司》:Uber简史
  13. Lenovo ServerGuide 10.4
  14. 成都商业贷款买新房,取公积金流程
  15. 马云:阿里巴巴要培养更多的京东并让这些企业挣钱
  16. mysql创建用户只能访问数据库中一张表
  17. spyder pyecharts不显示_逆袭的IGZOIPS!微星电竞显示器新品评测:色彩好且拖影少...
  18. UML活动图与状态图
  19. 【linux】将Linux里的文件上传 到gitee仓库
  20. 初级会计实务--第三章第二节、应付及预收账款

热门文章

  1. 一种基于实时分位数计算的系统及方法
  2. java获取文件名(前缀和后缀以及全名)
  3. 弱小目标检测跟踪算法研究(5) 基于顶帽变换(Top_hat)算法的红外弱小目标检测之背景抑制
  4. 英特尔挤爆牙膏:新AI训练芯片性能超A100,笔记本CPU首上16核5GHz
  5. 同济大学计算机学硕无人录取,同济大学公布拟录取结果,学硕初试成绩410分,复试却不合格!...
  6. 网站单页面跳转怎么设置,网站某个页面单独301跳转如何设置
  7. 一、STM32用HAL库实现uS级延时
  8. 将Spring Security OAuth2授权服务JWK与Consul 配置中心结合使用
  9. 企业微信设置欢迎语的方法以及应用
  10. 7.python的基础语法元素_文件、异常和模块