Я использую библиотеку exupero saveSvgAsPng для сохранения SVG в PNG файлах, но у меня возникла проблема при объединении с Angular-Nvd3.
Я получаю сообщение об ошибке:
Uncaught TypeError: el.getBBox не является функцией
Который мне кажется, что функция не может "захватить" SVG-элемент из моего nvd3-элемента.
Мой код выглядит так:
HTML:
<button onclick = "saveAsPng();" type="button" name="button"></button>
<div id = "chart1-canvas">
<nvd3 id = "chart1-svg" options="options1" data="data1"></nvd3>
</div>
Javascript:
function saveAsPng(){
saveSvgAsPng(document.getElementById("chart1-svg"), "diagram.png");
}
Любые предложения о том, как сделать эту работу должным образом, будут оценены.
Я не использовал эту библиотеку saveSvgAsPng, но я думаю, она ожидает, что вы передадите ей указатель на элемент SVG, а не элемент AngularJS, который его окружает.
Попробуйте следующее:
function saveAsPng() {
var svg = document.getElementById("chart1-svg").getElementsByTagName("svg")[0];
saveSvgAsPng(svg, "diagram.png");
}