我正在研究d3.js图表 . 我有雷达图表,我想以PNG格式打印,但是当我进行转换时它没有显示任何内容,当我保存图像时它保存但是完全黑色或者有些时间会出错
我使用了两种方法1.在谷歌上找到简单的代码
var $container = $('#chart');
content = $container.html().trim();
canvas = document.getElementById('svg-canvas');
// Draw svg on canvas
canvg(canvas, content);
// Change img be SVG representation
var theImage = canvas.toDataURL('image/png');
$('#svg-img').attr('src', theImage);
在这个使用过的Canvg库中但它没有显示任何内容,第二种方法是
2
saveSvgAsPng(document.getElementsByTagName("svg")[0], "diagram.png");
在这个 saveSvgAsPng 库中它给出了 Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
我搜索但不明白将画布转换为 PNG 的问题是 SVG 转换为Canvas但画布未转换为 PNG
1 回答
如果您尝试转换为SVG的图像是从另一个域进行的,则出于安全原因,您不能在其上使用toDataUrl .
如果您可以控制为图像提供服务的域,请添加 Headers
服务图像文件时可能会解决此问题
(显然,用正确的域名替换域名)