2013-09-02 16 views
5

html içeriğini görüntüye dönüştürmek için http://html2canvas.hertzen.com/documentation.html numaralı makalede anlatılan html2canvas kullanmak istiyorum. Ancak HighCharts'ın görüntüsünü düzgün bir şekilde alamıyorum. IE10'da boş resim oluşturur ve Chrome'da bunun bir parçasını oluşturur. Bu amaçla html2canvas kullanmak mümkün mü?HighCharts ile html2Canvas kullanma

+0

Highcharts şemasının çıkarılması için svg kullanır İşte

canvg için bağlantıdır. Bu svg'yi geçici bir tuvale çekmek için canvg kitaplığını kullanmanız ve sonra html2canvas'ı kullanarak ekran görüntüsünü aldığınızda bu tuvali kaldırmanız gerekecektir. – shinobi

cevap

11

Highcharts grafik çizmek için svg kullanır. Bu svg'yi geçici bir tuvale çizebilmek için canvg kütüphanesini kullanmanız ve sonra html2canvas'ı kullanarak ekran görüntüsünü aldıktan sonra bu tuvali kaldırmanız gerekecektir. Bunu deneyin https://code.google.com/p/canvg/downloads/list

:

//find all svg elements in $container 
//$container is the jQuery object of the div that you need to convert to image. This div may contain highcharts along with other child divs, etc 
var svgElements= $container.find('svg'); 

//replace all svgs with a temp canvas 
svgElements.each(function() { 
    var canvas, xml; 

    canvas = document.createElement("canvas"); 
    canvas.className = "screenShotTempCanvas"; 
    //convert SVG into a XML string 
    xml = (new XMLSerializer()).serializeToString(this); 

    // Removing the name space as IE throws an error 
    xml = xml.replace(/xmlns=\"http:\/\/www\.w3\.org\/2000\/svg\"/, ''); 

    //draw the SVG onto a canvas 
    canvg(canvas, xml); 
    $(canvas).insertAfter(this); 
    //hide the SVG element 
    this.className = "tempHide"; 
    $(this).hide(); 
}); 

//... 
//HERE GOES YOUR CODE FOR HTML2CANVAS SCREENSHOT 
//... 

//After your image is generated revert the temporary changes 
$container.find('.screenShotTempCanvas').remove(); 
$container.find('.tempHide').show().removeClass('tempHide'); 
+0

Bu benimle tam olarak çalışmadı, boş bir tuvali geri çekti

+0

@NaguibIhab Orada neyin yanlış gittiğinden emin değil. Ekran görüntüsünü almadan önce $ konteynerin DOM'a eklenip eklenmediğini kontrol edebilir misiniz? Sorun bu olabilir. – shinobi