Найдите причину, по которой Img не загружается в HTML на динамически созданном изображении

#javascript #html

Вопрос:

Поэтому я в основном динамически генерирую гигантский SVG и показываю его на экране. Мне нужно предоставить возможность печати в формате PDF. Сынок как только SVG появится на экране, одним нажатием кнопки я сделаю это:

 function printReportAsPDF(W,H){

   var svg = document.getElementById("report-svg");   
   var svgData = new XMLSerializer().serializeToString( svg );

   //console.log(svgData)

   var canvas = document.createElement("canvas");
   canvas.width = W;
   canvas.height = H;
   var ctx = canvas.getContext("2d");

   // Internally display the image. 
   var img = document.createElement( "img" );

   //console.log(btoa(svgData));
    
   img.setAttribute( "src", "data:image/svg xml;base64,"   btoa( svgData ) );
   
   img.onload = function() {
      console.log("onload");
      ctx.drawImage( img, 0, 0 );
      var imgData = canvas.toDataURL('image/png');
      let doc = new jsPDF();
      var PAGE_WIDTH  = doc.internal.pageSize.getWidth();
      var PAGE_HEIGHT = doc.internal.pageSize.getHeight();      
      console.log("done");
      doc.addImage(imgData, 'PNG', 0, 0, PAGE_WIDTH, PAGE_HEIGHT,"","FAST");
      doc.save("report.pdf");  
   };   

   img.onerror = function() {
      console.log("There was an error loading the image");
   }
}
 

Моя проблема в том, что, несмотря на то, что btoa, похоже, работает нормально, а svgData не равна нулю, и все, что я получаю, вызывается ошибка, а не вызывается загрузка.

Как я могу узнать, в чем здесь проблема?