2012-06-20 34 views

Trả lời

6

Đây là giải pháp thay thế thực hiện in trực tiếp. Nó dựa trên chức năng biểu đồ.print(), nhưng nó hoạt động trên nhiều biểu đồ.

Xem bản demo đây: 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

Tôi sẽ xem xét nó, nhưng nó có vẻ tốt từ những gì tôi thấy trong jsFiddle! –

+0

Highcharts đã xóa các tệp, bạn có thể sử dụng nó thay vì liên kết đầu tiên tốt hơn http://jsfiddle.net/q5Rzu/147/ – fcortes

+0

Bạn có thể giúp tôi không? Tôi muốn in 5 biểu đồ cùng một lúc. Nhưng tôi muốn cung cấp cho một tittle trên đầu trang đầu tiên. Làm thế nào để làm điều đó ? –

8

Phương thức ExportChart chấp nhận tham số để bạn có thể gửi nhiều biểu đồ. Tuy nhiên, phương thức in không chấp nhận bất kỳ tham số nào. Vì vậy, để in, bạn phải chỉ định từng biểu đồ riêng biệt như chart1.print(); và chart2.print(); in chúng riêng biệt.

Có hai cách giải quyết:

  1. In toàn bộ trang mà không sử dụng Highcharts in ấn. Đây là một số example.

  2. Bạn có thể xuất cả hai biểu đồ sang tệp pdf và sau đó in biểu mẫu ở đó. Dưới đây là ví dụ về cách export multiple charts to one pdf.

+0

Cảm ơn cho câu trả lời. Điều này làm việc trong jFiddle, nhưng trên trang của tôi, điều này không chỉ in biểu đồ nhưng mọi thứ khác trên trang. Tôi đoán tôi có thể làm việc một cái gì đó bằng cách sử dụng một CSS in, nhưng có cách nào để in chỉ các bảng xếp hạng? –

+0

Tôi đã cập nhật câu trả lời của mình. Có lẽ nó sẽ làm việc cho bạn. – Linger

+0

Đó là những gì tôi định sử dụng nếu không thể in nhiều biểu đồ từ phía máy khách. Tôi sẽ để câu hỏi mở ngay bây giờ, trong trường hợp ai đó có một giải pháp khác. –

Các vấn đề liên quan