gpt4 book ai didi

javascript - 将 ng2-chart Canvas 导出为 png 图像

转载 作者:行者123 更新时间:2023-11-29 16:05:38 25 4
gpt4 key购买 nike

我想创建一个链接以允许用户下载显示的图表。我目前试图让它工作的方式是 .toDataUrl 被认为是一种安全的方式,或者是否有另一种方式来做这件事。

HTML:

<canvas id="myChart" baseChart [colors]="colorsOverride" [datasets]="barChartData" [labels]="barChartLabels" [options]="barChartOptions" [legend]="barChartLegend"
[chartType]="barChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">
</canvas>

<div class="footer">
<button (click)="exportGraph()">Export Graph</button>
</div>

组件:

  export_graph = <HTMLCanvasElement>document.getElementById("myChart");
downloadLink: string;

exportGraph(){
this.downloadLink = this.export_graph.toDataURL("image/png");
}

当我尝试导出时,这是我在控制台中收到的错误消息:无法读取 null 的属性“toDataURL”

最佳答案

您应该使用 anchor 标记 <a>而不是 <button> ,您可以将其样式设置为看起来像一个按钮。然后您可以附加一个点击事件并按此方式执行:

笨蛋:http://plnkr.co/edit/xyfWok58R3eQdYk7pAds?p=preview

首先,将下载链接添加到您的 html <a href="#" (click)="downloadCanvas($event)"> DOWNLOAD THIS</a>

然后创建 downloadCanvas功能

downloadCanvas(event) {
// get the `<a>` element from click event
var anchor = event.target;
// get the canvas, I'm getting it by tag name, you can do by id
// and set the href of the anchor to the canvas dataUrl
anchor.href = document.getElementsByTagName('canvas')[0].toDataURL();
// set the anchors 'download' attibute (name of the file to be downloaded)
anchor.download = "test.png";
}

document.getElement... 很重要单击而不是事先。这样你就可以确定 html View <canvas>已呈现并完成绘图(您会在页面上看到它)。

在你的问题中,你正在寻找 <canvas>元素甚至在页面上呈现之前,这就是它未定义的原因。

关于javascript - 将 ng2-chart Canvas 导出为 png 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com