spreadjs区域快照转换为图片
本帖最后由 Richard.Ma 于 2022-9-5 13:39 编辑spreadjs区域快照功能目前有很多客户在使用,有时候,我们想要把快照直接保存为图片导出,spreadjs目前也没有直接保存图片方法可以将区域快照转换为图片,但是通过获取到对应的canvas可以这样来转换并导出图片
区域快照对象通过cameraShapeBuffer获取到对应的canvas,再通过toDataURL即可转换为对应格式图片的base64数据,比如下面的代码,转换为了png,然后下载即可
获取到base64数据
var pngdata=sheet.cameraShapes.cameraShapeBuffer.toDataURL('image/png')
通过下面的代码可以将上述的base64数据转换为图片
function base64ToBlob(code) {
var parts = code.split(";base64,");
var contentType = parts.split(":");
var raw = window.atob(parts);
var rawLength = raw.length;
var uint8Array = new Uint8Array(rawLength);
for (var i = 0; i < rawLength; i++) {
uint8Array = raw.charCodeAt(i);
}
return new Blob(, {type: contentType});
}
下载图片,传入上面返回的imgUrl
var aLink = document.createElement("a"); // 创建一个a标签
var blob = base64ToBlob(imgUrl);
var event = document.createEvent("HTMLEvents");
event.initEvent("click", true, true);
aLink.download = date.getTime() + "." + blob.type.split("/"); // 使用时间戳给文件命名
aLink.href = URL.createObjectURL(blob);
aLink.click();
本帖最后由 FzcSuiY 于 2022-9-17 14:47 编辑
您好!V15版本我试了一下 cameraShapeBuffer不知道为什么为undefined??麻烦解惑! 官网中文API里面也查不到cameraShapes和cameraShapeBuffer 你先看一下sheet.cameraShapes获取到的cameraShape对象是否存在,如果本身没有快照,自然无法获取cameraShapeBuffer
我添加了一个快照 ,cameraShapeBuffer还是无法获取 建议您可以新发一个帖子,附上能重现问题的demo。我帮你看看原因
页:
[1]