javascript-将组件绘制为PNG
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-将组件绘制为PNG,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1454字,纯文字阅读大概需要3分钟。
内容图文
![javascript-将组件绘制为PNG](/upload/InfoBanner/zyjiaocheng/694/daf5c1b1cde44a51a4bf555210d5d5d2.jpg)
我目前有一个Recharts组件,我想将其导出为PNG文件.
<LineChart
id="currentChart"
ref={(chart) => this.currentChart = chart}
width={this.state.width}
height={this.state.height}
data={this.testData}
margin={{top: 5, right: 30, left: 20, bottom: 5}}
>
<XAxis dataKey="name"/>
<YAxis/>
<CartesianGrid strokeDasharray="3 3"/>
<Tooltip/>
<Legend />
<Line type="monotone" dataKey="pv" stroke="#8884d8" activeDot={{r: 8}}/>
<Line type="monotone" dataKey="uv" stroke="#82ca9d"/>
</LineChart>
但是我不确定库是否直接支持此功能.
我有一个想法,涉及使用画布和2D渲染上下文使我接近解决方案,如MDN所述
但是,我不确定将HTML元素(或React组件)呈现为画布以实现此解决方案的通用方法.
我可能会把所有这些都弄错了,我将感谢您的纠正!
解决方法:
通过研究“图表”组件,我能够解决我的问题.图表在包装器下呈现为SVG,因此我要做的就是正确转换以保存为HTML或SVG
// Exports the graph as embedded JS or PNG
exportChart(asSVG) {
// A Recharts component is rendered as a div that contains namely an SVG
// which holds the chart. We can access this SVG by calling upon the first child/
let chartSVG = ReactDOM.findDOMNode(this.currentChart).children[0];
if (asSVG) {
let svgURL = new XMLSerializer().serializeToString(chartSVG);
let svgBlob = new Blob([svgURL], {type: "image/svg+xml;charset=utf-8"});
FileSaver.saveAs(svgBlob, this.state.uuid + ".svg");
} else {
let svgBlob = new Blob([chartSVG.outerHTML], {type: "text/html;charset=utf-8"});
FileSaver.saveAs(svgBlob, this.state.uuid + ".html");
}
}
我正在使用FileSaver.js作为保存提示.
内容总结
以上是互联网集市为您收集整理的javascript-将组件绘制为PNG全部内容,希望文章能够帮你解决javascript-将组件绘制为PNG所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。