vue前端怎么导出图片_VUE中将页面导出为图片或者PDF

vue前端怎么导出图片_VUE中将页面导出为图片或者PDF导出为图片1.将页面html转换成图片npminstallhtml2canvas–save2.在需要导出的页面引入importhtml2canvasfrom’html2canvas’;3.在methods中添加方法dataURLToBlob(dataurl){//ie图片转格式vararr=dataurl.split(‘,’),mime=arr[0].m…

大家好,又见面了,我是你们的朋友全栈君。

导出为图片

1.将页面html转换成图片   npm install html2canvas –save

2.在需要导出的页面引入  import html2canvas from ‘html2canvas’;

3.在 methods 中添加方法

dataURLToBlob(dataurl) {//ie 图片转格式

var arr = dataurl.split(‘,’), mime = arr[0].match(/:(.*?);/)[1],

bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);

while (n–) {

u8arr[n] = bstr.charCodeAt(n);

}

return new Blob([u8arr], {type: mime})

},

downloadResult(name) {

let canvasID = document.body

let a = document.createElement(‘a’);

html2canvas(canvasID).then(canvas => {

let dom = document.body.appendChild(canvas);

dom.style.display = “none”;

a.style.display = “none”;

document.body.removeChild(dom);

let blob = this.dataURLToBlob(dom.toDataURL(“image/png”));

a.setAttribute(“href”, URL.createObjectURL(blob));

a.setAttribute(“download”, name + “.png”)

document.body.appendChild(a);

a.click();

URL.revokeObjectURL(blob);

document.body.removeChild(a);

});

},

printOut(name) {

// 个人观察只是截取可见范围以及以下的区域,所以先将滚动条置顶

$(window).scrollTop(0); // jQuery 的方法

document.body.scrollTop = 0; // IE的

document.documentElement.scrollTop = 0; // 其他

this.downloadResult(name)

},

导出为PDF

1.将页面html转换成图片  npm install html2canvas –save

2.将图片生成pdf  npm install jspdf –save

3.在需要导出的页面引入  import html2canvas from ‘html2canvas’;   import JsPDF from ‘jspdf’

4.在 methods 中添加方法

printOut(name) {

let shareContent = document.body,//需要截图的包裹的(原生的)DOM 对象

width = shareContent.clientWidth, //获取dom 宽度

height = shareContent.clientHeight, //获取dom 高度

canvas = document.createElement(“canvas”), //创建一个canvas节点

scale = 2; //定义任意放大倍数 支持小数

canvas.width = width * scale; //定义canvas 宽度 * 缩放

canvas.height = height * scale; //定义canvas高度 *缩放

canvas.style.width = shareContent.clientWidth * scale + “px”;

canvas.style.height = shareContent.clientHeight * scale + “px”;

canvas.getContext(“2d”).scale(scale, scale); //获取context,设置scale

let opts = {

scale: scale, // 添加的scale 参数

canvas: canvas, //自定义 canvas

logging: false, //日志开关,便于查看html2canvas的内部执行流程

width: width, //dom 原始宽度

height: height,

useCORS: true, // 【重要】开启跨域配置

};

html2Canvas(shareContent, opts).then(() => {

var contentWidth = canvas.width;

var contentHeight = canvas.height;

//一页pdf显示html页面生成的canvas高度;

var pageHeight = (contentWidth / 592.28) * 841.89;

//未生成pdf的html页面高度

var leftHeight = contentHeight;

//页面偏移

var position = 0;

//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高

var imgWidth = 595.28;

var imgHeight = (592.28 / contentWidth) * contentHeight;

var pageData = canvas.toDataURL(“image/jpeg”, 1.0);

var PDF = new JsPDF(“”, “pt”, “a4”);

if (leftHeight < pageHeight) {

PDF.addImage(pageData, “JPEG”, 0, 0, imgWidth, imgHeight);

} else {

while (leftHeight > 0) {

PDF.addImage(pageData, “JPEG”, 0, position, imgWidth, imgHeight);

leftHeight -= pageHeight;

position -= 841.89;

if (leftHeight > 0) {

PDF.addPage();

}

}

}

PDF.save(name + “.pdf”); // 这里是导出的文件名

});

},

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141618.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 视频的行为识别「建议收藏」

    视频的行为识别「建议收藏」1.概述使用DL方法解决视频中行为识别/动作识别的问题解决思路有三个分支:分别是two-stream(双流)方法,C3D方法以及CNN-LSTM方法。本文将从算法介绍、算法架构、参数配置、训练集预处理、算法优势及原因、运行结果六个方面对每种算法进行阐释,并对每一个分支的算法集合总结自己的心得。本文暂不区分行为识别(ActivityRecognition)与动作识别(ActionRecog…

    2022年6月9日
    39
  • .pfx 证书和 .cer 证书

    .pfx 证书和 .cer 证书证书系列:1:.pfx证书和.cer证书2:导入pfx证书通常情况下,作为文件形式存在的证书一般有三种格式:第一种:带有私钥的证书,由PublicKeyCryptographyStandards#12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以.pfx作为证书文件后缀名。 第二种:DEREncodedBinary(.cer)二进制编码的证书,证书中没有私钥,DER编码二进制格式的证书文件,以.cer作为证书文件后缀名。 第三种:Bas.

    2022年6月3日
    92
  • VS2010 旗舰版序列号

    VS2010 旗舰版序列号YCFHQ-9DWCY-DKV88-T2TMH-G7BHP转载于:https://www.cnblogs.com/canyuexingchen/p/3229530.html

    2022年7月20日
    13
  • 机器学习中的数学——激活函数(六):Parametric ReLU(PReLU)函数

    机器学习中的数学——激活函数(六):Parametric ReLU(PReLU)函数PReLU也是ReLU的改进版本:PReLU(x)={x,x>0αix,x≤0PReLU(x)=\left\{\begin{aligned}x&\quad,x>0\\\alpha_ix&\quad,x\leq0\\\end{aligned}\right.PReLU(x)={xαi​x​,x>0,x≤0​PReLU函数中,参数α\alphaα通常为0到1之间的数字,并且通常相对较小。如果αi=0\alpha_i=0αi​=0

    2022年6月22日
    40
  • intellij idea2021激活码(JetBrains全家桶)[通俗易懂]

    (intellij idea2021激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlBCEBXQ3A4G-eyJsa…

    2022年3月22日
    66
  • go语言要学多久才能工作_go语言可以开发什么

    go语言要学多久才能工作_go语言可以开发什么我在2011年就听说了Go并学习了一段时间,坦白的说,那时候对Go是比较无感的,因为并没有看到Go的特别亮眼的地方,可能和我使用C、Erlang、Java有关,这三种语言可以写高性能、高并发、高可用的服务;包含了面相过程、面向并发、面向对象的思想,我觉得我并不需要再学习Go,何况那个时候好像也没宣传的那么优秀。 一切都发生在418天前,因为工作的需要,我开始写Go了,本来预期是一段压抑、蛋疼的旅程

    2022年10月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号