У меня есть SVG со многими изображениями, ссылающимися на внешние источники изображения (скажем, из amazon s3 bucket). Я пытаюсь преобразовать его в PNG, как этотСохраните svg as png, где svg содержит изображения с внешней ссылкой
canvg(document.getElementById('myCanvas'), svg);
var imgData = document.getElementById('myCanvas').toDataURL("image/png");
я получаю эту ошибку Uncaught SecurityError: Не удалось выполнить «toDataURL» на «HTMLCanvasElement»: Tainted холсты не может быть экспортирован.
Я изменил настройки s3 bucket (As mentioned here). Добавлен этот кусок кода после функции canvg
var img = new Image();
img.setAttribute('crossOrigin', 'anonymous');
img.src = document.getElementById('myCanvas').value;
Даже пытался перебирает все теги изображения и установить crossOrigin атрибут
Тем не менее я получаю ту же ошибку.
Возможный дубликат http://stackoverflow.com/questions/29975138/how-can-i-get-pngbase64-with-images-inside-of-svg-in-google-charts – guest271314
Наконец-то я получил решение , Теперь я делаю преобразование на стороне сервера (используя библиотеку транскодера apache batik). Больше никаких ошибок безопасности;) – Jerry