0

私は ie9 または ie10 をサポートする必要があるプロジェクトに参加しています。
データの視覚化に d3.js を使用しています。
ここで、グラフを pdf としてエクスポートする関数を提供する必要があります。
私は可能な解決策を調査してきました。canvas + jsPdf が進むべき道のようです。以下は私が書いたコードです。
しかし問題は、toDataURL が呼び出されると、IE9 と IE10 でセキュリティ エラーが発生することです。jsPdfはbase64画像データしか必要としないので、キャンバスを使用せずにbase64画像データを取得するための回避策があるかどうか疑問に思っていますか???

  1. ルート svg 要素への createObjectURL

    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;
    
4

1 に答える 1