Я работаю над проектом, который требует поддержки ie9 или ie10.
Я использую d3.js для визуализации данных.
Теперь мне нужно предоставить функцию для экспорта диаграммы в формате pdf.
У меня есть были исследованы возможные решения. Кажется, что canvas + jsPdf — это то, что нужно, ниже приведен код, который я пишу.
Но проблема в том, что когда вызывается toDataURL, это вызывает ошибки безопасности в IE9 и IE10. Поэтому мне интересно, есть ли способ получить данные изображения base64 без использования холста, поскольку jsPdf нужны только данные изображения base64???
createObjectURL для корневого элемента svg
svgElement = $('svg').get(0); serializer = new XMLSerializer(); str = serializer.serializeToString(svgElement); DOMURL = window.URL || window.webkitURL || window; url = DOMURL.createObjectURL(new Blob([str], {type: 'image/svg+xml;charset=utf-8'}));
нарисовать изображение с помощью холста
img = new Image(); img.onload = function(){ ctx.drawImage(img, 0, 0); imgData = $canvas.get(0).toDataURL("image/jpeg"); DOMURL.revokeObjectURL(url); pdf = new jsPDF('landscape', 'pt', 1000, 800); pdf.addImage(imgData, 'JPEG', 0, 0); pdf.save('download.pdf'); }; img.src = url;