在el-image组件的预览中添加打印功能(自定义功能)

思路:给图片添加点击事件,通过js获取预览的工具栏,在工具栏中添加自定义按钮及事件

1、html 中 image标签

<el-image

style="width: 139px;

height: 89px"

:src="fileUrl"

:preview-src-list="[fileUrl]"

@click="handleImageClick(fileUrl)" //添加点击事件

/>

2、再点击事件中,通过js操作dom,添加自定义按钮事件

handleImageClick(fileUrl) {

this.$nextTick(() => {

const viewer = document.querySelector('.el-image-viewer__wrapper') //工具栏的dom

if (viewer) {

// 防止重复添加

if (!document.querySelector('.custom-print-btns')) {

const btn = document.createElement('button') //创建按钮

btn.className = 'custom-print-btns' //按需设计样式

btn.innerHTML = '<i class="el-icon-printer"></i>'

btn.onclick = () => this.printImage(fileUrl) //点击按钮触发事件

const btnGroup = viewer.querySelector('.el-image-viewer__actions__inner')

if (btnGroup) {

btnGroup.appendChild(btn) //在工具中添加按钮

}

}

}

})

},

3、添加后的图

4、打印事件

printImage(fileUrl) {

const printWindow = window.open('', '_blank')

printWindow.document.write(`

<html>

<head>

<title>打印图片</title>

<style>

body { text-align: center; margin: 0; padding: 0; }

img { max-width: 100%; max-height: 100vh; margin: auto; }

</style>

</head>

<body>

<img src="${fileUrl}" />

<script>

window.onload = function() {

setTimeout(function() {

window.print();

window.close();

}, 200);

}

<\/script>

</body>

</html>

`)

printWindow.document.close()

},

5、结果图

相关推荐
hh随便起个名2 小时前
力扣二叉树的三种遍历
javascript·数据结构·算法·leetcode
我是小路路呀3 小时前
element级联选择器:已选中一个二级节点,随后又点击了一个一级节点(仅浏览,未确认选择),此时下拉框失去焦点并关闭
javascript·vue.js·elementui
程序员爱钓鱼3 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder3 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL4 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码4 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_4 小时前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy5 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌5 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构