htmlToPdf处理视频

news/2024/9/20 9:01:36/文章来源:https://www.cnblogs.com/mulu777/p/18302977

一个写好的html页面要打印pdf,其中有视频也有图片。参考了网上的一些方法,最终是在获取数据的时候,对视频进行了截取第一帧处理。

getFirstImgBase64(){this.piclist.forEach(item => {if(item.url.endsWith('.mp4')) {let dataURL = ""let video = document.createElement("video")video.setAttribute("crossOrigin", "anonymous") //处理跨域,保证可以读取到视频video.setAttribute("src", item.url)video.setAttribute("preload", "auto") // 不设置该项就不会开启预先加载视频,那么拿到的会是黑屏// 第一帧加载完毕时调用video.addEventListener("loadeddata", function () {let canvas = document.createElement("canvas")anvas.width = 100 //canvas的尺寸————可以理解为画板的尺寸————最终img占据的大小canvas.height = 100//绘制canvas,[资源地址,绘制起始横坐标,绘制起始纵坐标,绘制宽度,绘制高度]//————宽度高度可以理解为绘制的图像的尺寸,和上面的画板canvas的尺寸做好区分canvas.getContext("2d").drawImage(video, 0, 0, 100, 100)dataURL = canvas.toDataURL("image/jpeg") //转换为base64item.thumbnailUrl = dataURL})}})
}
同时定义了一个属性,在点击下载的时候将视频切换为图片,保证下载,下载完成后再切回视频<div v-for="(item, index) in piclist" id="content" class="flex"><video v-if="item.url.endsWith('.mp4') && !isDownload" :src="item.url"  :ref="'videoElement' + index" width="100px" height="100px" controls style="margin-right: 20px"></video><img v-if="item.url.endsWith('.mp4') && isDownload" :src="item.thumbnailUrl" alt="Video Thumbnail" style="margin-right: 20px"><el-image v-if="!item.url.endsWith('.mp4')":src="item.url"style="width: 100px;height: 100px;margin-right: 20px" :preview-src-list="[item.url]"></el-image>
</div>
// 点击下载按钮,在getpdf中使用new Promise定义了一个结束返回
onClickDownLoad(name) {this.isDownload = truethis.$nextTick(() => {this.getPdf('pdfDomRecord', name).then(res => {this.isDownload = false});})
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744067.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

my-tv修复版本

github上很火的项目,但是作者已不再维护,这里分享一个修复版本,可以正常观看 软件链接:https://pan.quark.cn/s/836a5050fcab

提升Camstar性能

😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着前进,开心的笑。(●◡●)

K8S教程:如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装Kubernetes集群

Kubernetes,通常缩写为K8s,是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。有了Kubernetes,您可以轻松地部署、更新和扩展应用,而无需担心底层基础设施。一个Kubernetes集群由控制平面节点(master节点)和工作节点(worker节点)组成。确保集群的高效运行…

Panda数据处理

一、 Pandas简介 Pandas,python+data+analysis的组合缩写,是python中基于numpy和matplotlib第三方数据分析库,与后者共同构成python数据分析基础工具包,享有数据三剑客之名。正因为pandas是在numpy基础上实现的,其核心数据结构与numpy的ndarray十分相似,但pandas与numpy的…

1.基础知识

单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片 CPU:CPU内存:SRAM硬盘:FLASH主板:外设 仪器仪表:电源/示波器/焊台家用电器:空调/冰箱/洗衣机工业控制:机器人/PLC/电梯汽车电子:GPS/ABS/胎压监测 :数据与程序储存在同一存储器,分时复用Core…

线程池遇到父子任务,有大坑,要注意!

你好呀,我是歪歪。 最近在使用线程池的时候踩了一个坑,给你分享一下。 在实际业务场景下,涉及到业务代码和不同的微服务,导致问题有点难以定位,但是最终分析出原因之后,发现可以用一个很简单的例子来演示。 所以歪师傅这次先用 Demo 说问题,再说场景,方便吸收。Demo 老…

线性规划模型复习总结

线性规划(Linear Programming, LP)是一种数学优化方法,用于在给定约束条件下最大化或最小化目标函数。线性规划广泛应用于经济、工程、管理等领域,通过建立数学模型,帮助决策者找到最优解决方案。 一、线性规划数学模型 1.1 模型三要素目标函数(Objective Function) 目标…

nginx ./nginx -s reload 工作进程pid与实际不一致导致平滑重启报错

某次修改nginx配置后使用 ./nginx -s reload 重启nginx, 结果报错, 如图所示, 去kill工作进程的时候显示找不到该进程原因是位于nginx/logs下的 nginx.pid 中的pid和实际不一致造成的 nginx.pid 文件是 Nginx web 服务器在启动时创建的一个进程标识符 (PID) 文件。这个文件包含…

第七天学习笔记(经验测试,白盒测试)

经验测试法 错误推测法 基于经验的测试技术之错误推测法 错误推测法也叫错误猜测法,就是根据经验猜想,已有的缺陷,测试经验和失败数据等可能有什么问题并依此设计测试用例.异常分析法 基于经验的测试技术之异常分析法 系统异常分析法就是针对系统有可能存在的异常操作、软硬…

SQL Server sa账号被锁定

SQL Server的sa账号老是被锁(登录已锁定)问题:最近sa登录老是被锁定,去查看数据库->安全性->sa账号右键属性,在状态选项卡中找到sql server 身份验证 ,发现“登录已锁定”被勾选了;把这个勾选去掉,然后提示必须修改密码。“登录已锁定”的勾选去掉并修改密码后又能…

B+树要点梳理

B+树重要操作 中间节点中间节点的key,与其对应的指针的原则是,小于key的元素在其指针指向的节点中 中间节点的key可以看成是右斜着排放的,即小于等于key的节点由key对应的指针指定,最有一个指针指向大于最右侧key的节点分裂当中间节点数量满了时,进行分裂,新生成一个相邻…