2012-06-20 21 views

cevap

6

Doğrudan baskı yapan alternatif bir çözüm. chart.print() işlevine dayanır, ancak birden çok grafik üzerinde çalışır. cevap için http://jsfiddle.net/jim31415/q5Rzu/150/

 //-------------------------------------------------------------------- 
     $("#print").click(function() { 
      printCharts([chart1, chart2, chart3]); 
     }); 


     //-------------------------------------------------------------------- 
     function printCharts(charts) { 

      var origDisplay = [], 
       origParent = [], 
       body = document.body, 
       childNodes = body.childNodes; 

      // hide all body content 
      Highcharts.each(childNodes, function (node, i) { 
       if (node.nodeType === 1) { 
        origDisplay[i] = node.style.display; 
        node.style.display = "none"; 
       } 
      }); 

      // put the charts back in 
      $.each(charts, function (i, chart) { 
       origParent[i] = chart.container.parentNode; 
       body.appendChild(chart.container); 
      }); 

      // print 
      window.print(); 

      // allow the browser to prepare before reverting 
      setTimeout(function() { 
       // put the charts back in 
       $.each(charts, function (i, chart) { 
        origParent[i].appendChild(chart.container); 
       }); 

       // restore all body content 
       Highcharts.each(childNodes, function (node, i) { 
        if (node.nodeType === 1) { 
         node.style.display = origDisplay[i]; 
        } 
       }); 
      }, 500); 
     } 
    }); 
+0

Ona bakacağım ama jsFiddle'da gördüğüm kadar iyi görünüyor! –

+0

Highcharts dosyaları kaldırdı, ilk bağlantı yerine bunu daha iyi kullanabilirsin http://jsfiddle.net/q5Rzu/147/ – fcortes

+0

Bana yardım edebilir misin? Bir seferde 5 grafik basmak istiyorum. Ama ilk sayfanın üstünde bir parça vermek istiyorum. Bu nasıl yapılır ? –

8

ExportChart yöntemi parametreleri kabul eder, böylece birden fazla grafik gönderebilirsiniz. Ancak, baskı yöntemi herhangi bir parametre kabul etmez. Dolayısıyla, yazdırmak için her bir grafiğin ayrı ayrı chart1.print(); ve chart2.print(); Bunları ayrı ayrı basar. Highcharts baskı kullanmadan tüm sayfayı yazdırma

  1. :

    iki geçici çözüm vardır. İşte bir example.

  2. Grafiklerin her ikisini bir pdf dosyasına dışa aktarabilir ve sonra buradan form yazdırabilirsiniz. İşte, export multiple charts to one pdf ile ilgili bir örnek.

+0

Teşekkür:

burada demo bakınız. Bu jFiddle içinde çalışır, ancak sayfamda, bu sadece grafik değil, sayfadaki diğer her şeyi yazdırır. Sanırım bir baskı CSS kullanarak bir şeyler yapabilirim, ama sadece çizelgeleri basmanın bir yolu var mı? –

+0

Cevabımı güncelledim. Belki senin için çalışacaktır. – Linger

+0

İstemci tarafında birden çok grafik yazdırmak mümkün değilse, kullanmayı amaçladım. Birisinin farklı bir çözümü varsa, şu an için soruyu açık bırakacağım. –