1

我正在尝试从我的页面中获取谷歌图表生成的图像并将其绘制在画布上,这样我就可以使用 canvg lib 函数并将其转换为 jpeg 图像,然后可以将其附加到 pdf 文件中。我的问题是某些版本的 IE 无法处理画布属性。为了克服这个问题,我正在尝试使用 excanvas lib。在下面的代码中,我从容器中捕获图像。

  function getImageFromResource(containerId){

             var browserTypeAndVersion = getBrowserTypeAndVersion();

             var container = document.getElementById(containerId);

             var chartArea;

             var isIE = false;
             if(browserTypeAndVersion[0] == "MSIE" && 8 >= parseInt(browserTypeAndVersion[1])){
                isIE = true;                     
             }
             if(isIE){
                 chartArea = container.getElementsByTagName('iframe')[0].parentNode;
             }else{
                 chartArea = container.getElementsByTagName('svg')[0].parentNode;
             }
             var svg = chartArea.innerHTML;

             var canvas = document.createElement('canvas');
             canvas.setAttribute('width', chartArea.offsetWidth);
             canvas.setAttribute('height', chartArea.offsetHeight);
             canvas.setAttribute(
               'style',
               'position: absolute; ' +
               'top: ' + (-chartArea.offsetHeight * 2) + 'px;' +
               'left: ' + (-chartArea.offsetWidth * 2) + 'px;');

             if(isIE){
                 window.G_vmlCanvasManager.initElement(canvas);
             }

             document.body.appendChild(canvas);

             canvg(canvas, svg);
             var imgData = canvas.toDataURL("image/jpeg");

             return imgData;
        } 

当我尝试使用 G_vmlCanvasManager 中的 initElement 启动画布时,会出现此问题,它仍然未定义,这意味着它没有被加载或类似的东西。所以我需要知道如何加载它,对于额外的信息,我的 js 压缩文件是在基本页面的头部声明的。感谢您的帮助和关注家伙。

4

0 回答 0