vue html页面打印功能vue-print-nb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <div id= "printMe" style= "background:red;" > <p>葫芦娃,葫芦娃</p> <p>一根藤上七朵花 </p> <p>小小树藤是我家 啦啦啦啦 </p> <p>叮当当咚咚当当 浇不大</p> <p> 叮当当咚咚当当 是我家</p> <p> 啦啦啦啦</p> <p>...</p> <div class = "describle" > <el-form :model= "form" :rules= "rules" ref= "from" class = "demo-ruleForm" > <el-form-item label= "姓名:" prop= "name" > <el-input v-model= "form.name" ></el-input> </el-form-item> <el-form-item label= "描述:" prop= "describle" > <el-input :disabled= "detail" type= "textarea" :rows= "4" :maxlength= "2000" placeholder= "" v-model= "form.describle" > </el-input> </el-form-item> </el-form> </div> </div> <button v-print= "'#printMe'" >Print local range</button> |
<template> <div> <div id="printMe" ref="printContent"> <ul class="content"> <li> 轻轻的我走了,</li> <li> 轻轻的我走了,</li> <li> 轻轻的我走了,</li> <li> 轻轻的我走了,</li> <li> 轻轻的我走了,</li> <li> 轻轻的我走了,</li> <li> 轻轻的我走了,</li> <li> 轻轻的我走了,</li> </ul> </div> <el-button type="primary" @click="toImg"> 转图片打印 </el-button> <el-button v-print="printObj" type="primary"> 直接打印 </el-button> <img style="margin-top:20px;" :src="img" alt=""> </div> </template><script>
import html2canvas from 'html2canvas' // 转图片打印需要先安装 html2Canvas 和 print-js
import printJS from 'print-js'
export default {
data() {
return {
img: '',
printObj: {
id: 'printMe',
popTitle: '打印',
extraCss: 'https://www.google.com,https://www.google.com',
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>'
}
}
},
watch: {
},created() {
},
methods: {
toImg() { // 转图片打印
html2canvas(this.$refs.printContent, {
backgroundColor: null,
useCORS: true,
windowHeight: document.body.scrollHeight
}).then((canvas) => {
// let url = canvas.toDataURL('image/jpeg', 1.0)
const url = canvas.toDataURL()
this.img = url
printJS({
printable: url,
type: 'image',
documentTitle: '打印图片'
})
console.log(url)
})
}
}
}
</script>
ps: 2021/9/11 更新内容
1. 增加表单打印内容, 在页面增加了一个 form 表单, 如果你直接打印,CheckBox 和 radio 可能不能显示, 可以设置一下打印属性, 勾选上背景图片, 就可以显示了
2. 增加 el-table 打印,el-table 默认单元格的宽度是 px, 这在打印时会出现显示不全问题