2012-06-20 5 views
8

Возможно ли создать кнопку «Печать всего» для Highcharts, где напечатано больше одной диаграммы?Highcharts: кнопка «Распечатать все»

Я знаю, что экспорт нескольких диаграмм возможен, как показано в jFiddle: http://jsfiddle.net/highcharts/gd7bB/1/, но я не уверен, что Highcharts допускает аналогичный метод с печатью.

ответ

6

Это альтернативное решение, использующее печать напрямую. Он основан на функции chart.print(), но он работает с несколькими диаграммами.

Смотрите демо здесь: 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

Я загляну в него, но он хорошо выглядит из того, что я вижу в jsFiddle! –

+0

Highcharts удалили файлы, вы можете использовать их вместо первой ссылки лучше http://jsfiddle.net/q5Rzu/147/ – fcortes

+0

Можете ли вы мне помочь? Я хочу напечатать 5 диаграмм за раз. Но я хочу дать титру в верхней части первой страницы. Как это сделать ? –

8

Метод exportChart принимает параметры, поэтому вы можете отправить его более чем одной диаграмме. Однако метод печати не принимает никаких параметров. Итак, чтобы распечатать, вы должны указать каждый график отдельно, как chart1.print(); и chart2.print(); который печатает их отдельно.

Есть два способа решения:

  1. Печать всей страницы без использования Highcharts печати. Вот example.

  2. Вы можете экспортировать обе диаграммы в pdf-файл и затем распечатать форму там. Вот пример о том, как export multiple charts to one pdf.

+0

Спасибо за ответ. Это работает в jFiddle, но на моей странице это печатает не только диаграмму, но и все остальное на странице. Думаю, я мог бы что-то с помощью CSS, но есть ли способ распечатать только графики? –

+0

Я обновил свой ответ. Возможно, это сработает для вас. – Linger

+0

Это то, что я намеревался использовать, если невозможно распечатать несколько диаграмм с клиентской стороны. Сейчас я оставлю вопрос открытым, если у кого-то другое решение. –

Смежные вопросы