ページからGoogleチャートで生成された画像を取得してキャンバスに描画しようとしているので、canvg lib関数を使用してjpeg画像に変換し、pdfファイルに添付できます。私の問題は、IE の一部のバージョンが canvas 属性を処理できないことです。これを克服するために、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 圧縮ファイルがベース ページの先頭で宣言されています。皆さんの助けと注意に感謝します。