VUE项目中打印/转换图片打印

目标

  • 将页面一个带滚动条的div生成图片并打印

方法

方法一

  • 使用vue-print-nb:可使用指令,简单方便,不过可能会有排版问题

方法二

  • 使用html2canvas + printJS,没有排版问题,需要做事件处理(先转换成图片再打印)

插件安装/模块引入

方法一

  • 在项目中安装插件vue-print-nb
npm install vue-print-nb --save
  • 在main.js中引入
import Print from 'vue-print-nb' //打印
Vue.use(Print)

方法二

  • 在项目中安装插件html2canvas 和 printJS
npm install html2canvas --save
npm install print-js --save
  • 在页面中引入
import html2canvas from 'html2canvas'
import printJS from 'print-js'

打印事件处理

方法一

  • 指令v-print
<el-button v-if="print_show" type="success" plain class="print-btn" v-print="printObj">打 印</el-button>
  • 在data里面设置打印的DIV的id和标题
printObj: {
     id: 'assessContent',//打印标签的id
     popTitle: ''// 打印的标题,因为css中写了去掉页眉页脚所以不显示
},

方法二

<el-button v-if="print_show" type="success" class="print-btn" @click="printHandle">打 印</el-button>
  • this.$refs.assessContent拿到被打印的DIV的DOM
  • assessContent是该DOM设置的ref
printHandle() {
      html2canvas(this.$refs.assessContent, {
             backgroundColor: null,
             useCORS: true,
             windowHeight: document.body.scrollHeight
      }).then((canvas) => {
             const url = canvas.toDataURL()
             this.img = url
             printJS({
                 printable: url,
                 type: 'image',
                 documentTitle: ''
            })
      })
},
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值