Как получить данные изображения base64 без вызова canvas toDataURL?

Я работаю над проектом, который требует поддержки ie9 или ie10.
Я использую d3.js для визуализации данных.
Теперь мне нужно предоставить функцию для экспорта диаграммы в формате pdf.
У меня есть были исследованы возможные решения. Кажется, что canvas + jsPdf — это то, что нужно, ниже приведен код, который я пишу.
Но проблема в том, что когда вызывается toDataURL, это вызывает ошибки безопасности в IE9 и IE10. Поэтому мне интересно, есть ли способ получить данные изображения base64 без использования холста, поскольку jsPdf нужны только данные изображения base64???

  1. 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'}));
    
  2. нарисовать изображение с помощью холста

    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;
    

person Aaron Shen    schedule 31.12.2014    source источник
comment
Изображение поступает с другого сервера?   -  person ericjbasti    schedule 31.12.2014
comment
нет, URL-адрес изображения src динамически генерируется на основе корневого элемента svg в dom той же страницы.   -  person Aaron Shen    schedule 01.01.2015


Ответы (1)


Наконец-то я нашел решение, заключающееся в использовании проекта с открытым исходным кодом: canvg

person Aaron Shen    schedule 02.07.2015