当前位置: 首页 > news >正文

Vue如何将网页转换成图片或PDF并上传

一.使用html2canvas获取页面元素并绘制成图片

htmlcanvas中文文档

npm install --save html2canvas

<template><div><button @click="uploadImg">上传</button><div ref="yourDom"><!-- ...图片中页面内容 --><img src="@/assets/logo/logo.png" alt="" /></div></div>
</template>
import html2canvas from 'html2canvas';
	//base64转filebase64ToFile(dataURL, filename) {let arr = dataURL?.split?.(',');let youType = arr[0].match(/:(.*?);/)[1];let bstr = atob(arr[1]),n = bstr.length,u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename + '.' + youType.split('/')[1], { type: youType });},//点击上传按钮uploadImg() {html2canvas(this.$refs.yourDom, {allowTaint: true, //是否允许不同源的图片污染画布useCORS: true, //是否尝试使用 CORS 从服务器加载图片scale: 2, //用于渲染的比例,默认为浏览器设备像素比率。}).then(canvas => {// canvas.toDataURL(type, encoderOptions) 是 JavaScript 中用于将 <canvas> 元素的内容转换为数据 URL 的方法// type:指定输出的图像类型,默认为 "image/png"。也可以是 "image/jpeg" 或 "image/webp" 等格式。// encoderOptions:用于指定图像编码质量或压缩级别的参数(取值范围为 0-1),仅适用于 "image/jpeg" 和 "image/webp" 格式。let imgBase64Url = canvas.toDataURL('image/jpeg', 1);let imgFile = this.base64ToFile(imgBase64Url, '图片名称');console.log('🚀 ~ canvasImg ~ imgFile:', imgFile);//你的上传接口方法//let formData = new FormData();//formData.append('avatarfile', imgFile);//uploadAvatar(formData).then(response => {//console.log(window.location.origin + process.env.VUE_APP_BASE_API + response.imgUrl);});});},

效果
在这里插入图片描述
在这里插入图片描述

二.使用jspdf生成pdf并将图片添加进去

jsPDF中文文档并找不到啥需要的东西
在这里插入图片描述

npm install jspdf --save
import jsPDF from 'jspdf';

将uploadImg方法中上传图片部分换为转换成pdf并上传

 //点击上传按钮uploadImg() {html2canvas(this.$refs.yourDom, {allowTaint: true, //是否允许不同源的图片污染画布useCORS: true, //是否尝试使用 CORS 从服务器加载图片scale: 2, //用于渲染的比例,默认为浏览器设备像素比率。}).then(canvas => {// canvas.toDataURL(type, encoderOptions) 是 JavaScript 中用于将 <canvas> 元素的内容转换为数据 URL 的方法// type:指定输出的图像类型,默认为 "image/png"。也可以是 "image/jpeg" 或 "image/webp" 等格式。// encoderOptions:用于指定图像编码质量或压缩级别的参数(取值范围为 0-1),仅适用于 "image/jpeg" 和 "image/webp" 格式。let imgBase64Url = canvas.toDataURL('image/jpeg', 1);this.imgToPdf(canvas, imgBase64Url);});},
//图片转pdfimgToPdf(canvas, imgBase64Url) {let pdf = new jsPDF('p', 'pt', 'a4');pdf.addImage(imgBase64Url, 'JPEG', 0, 0, canvas.width * 0.2, canvas.height * 0.2);let pdfBlob = pdf.output('blob');let pdfFile = new File([pdfBlob], '文件名字.pdf', { type: 'application/pdf' });console.log('pdfFile', pdfFile);//你的上传接口方法//let formData = new FormData();//formData.append('avatarfile', pdfFile);//uploadAvatar(formData).then(response => {//console.log(window.location.origin + process.env.VUE_APP_BASE_API + response.imgUrl);//});//下载文件// pdf.save("文件名字.pdf");},

效果
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/434723.html

相关文章:

  • 【引领数据分析革命】TaskWeaver框架全景解读与入门指南!
  • LabVIEW灵活集成与调试的方法
  • 网络药理学:分子对接之二:PDB数据库的使用(已知PDB ID)、PubChem数据库如果没有3D结构
  • JS获取页面中video标签视频的封面和时长
  • LLM大模型学习:AI Agent综述
  • 极米科技:走出舒适圈,推动数据架构现代化升级 | OceanBase 《DB大咖说》
  • IP学习——Fiveday
  • 格式化的硬盘能恢复数据吗?拯救数据的可能性
  • 亚信安全出席第五届国际反病毒大会 探究AI现代网络勒索治理
  • C语言从头学58——学习头文件math.h(一)
  • 前端JS常见面试题
  • 利用深度学习实现验证码识别-4-ResNet18+imagecaptcha
  • IDC基础学习笔记
  • Mysql基础练习题 1527.患某种疾病的患者 (力扣)
  • Mysql链接异常 | [08001] Public Key Retrieval is not allowed
  • vue3项目中如何动态循环设置ref并获取使用
  • stm32之SPI通信协议
  • Unity 摄像机(Camera)详解
  • 数学基础 -- 线性代数之LU分解
  • 高职人工智能训练师边缘计算实训室解决方案
  • 【Java】SpringCloud中使用set方法报错空指针
  • 芯片杂谈 -- 常聊的内核包含哪些模块
  • 运维问题0002:SAP多模块问题-SAP系统程序在执行时,跳出“加急快件”窗口,提示:快件文档“更新已终止”从作者***收到
  • 深度解析RAG:你必须要了解的RAG优化方法
  • 深度学习驱动下的字符识别:挑战与创新
  • 使用 JAXB 将内嵌的JAVA对象转换为 xml文件
  • 若依项目后台启动报错: [网关异常处理]、503
  • 【C++ Qt day10】
  • GO HTTP库使用
  • 数据结构 - 顺序表