2015-09-28 9 views
5

जब मैं नीचे दाएं फ्रेम को प्रिंट कर रहा हूं तो टेक्स्ट some text आंशिक रूप से हाइचार्ट्स द्वारा कवर किया गया है क्योंकि वे प्रिंटिंग से पहले आकार बदलते नहीं हैं। वेबसाइट के लिए @media print के साथ प्रिंटिंग लेआउट को कॉन्फ़िगर करने का कोई समाधान है और जब वेबसाइट मुद्रित होती है तो कंटेनर आकार में पुनर्वितरण/आकार बदलने के लिए हाईचार्ट्स को बल दें?वेबसाइट प्रिंट करते समय हाईचार्ट का पुनर्विक्रय/आकार बदलें

एचटीएमएल

<script src="http://code.highcharts.com/highcharts.js"></script> 
<script src="http://code.highcharts.com/modules/exporting.js"></script> 

<div id="container" style="height: 400px"></div> 
<div id="container" style="height: 400px"></div> 

जावास्क्रिप्ट

$(function() { 
    Highcharts.setOptions({ // Apply to all charts 
     chart: { 
      events: { 
       beforePrint: function() { 
        this.oldhasUserSize = this.hasUserSize; 
        this.resetParams = [this.chartWidth, this.chartHeight, false]; 
        this.setSize(600, 400, false); 
       }, 
       afterPrint: function() { 
        this.setSize.apply(this, this.resetParams); 
        this.hasUserSize = this.oldhasUserSize; 
       } 
      } 
     } 
    }); 

    $('#container').highcharts({ 

     title: { 
      text: 'Rescale to print' 
     }, 

     subtitle: { 
      text: 'Click the context menu and choose "Print chart".<br>The chart size is set to 600x400 and restored after print.' 
     }, 

     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
       'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 

     series: [{ 
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] 
     }] 

    }); 

}); 

JSFiddle

+0

में आपका स्वागत है ज्यादातर परीक्षण किया गया। मैंने JSFiddle इनलाइन से कोड शामिल करने के लिए अपनी पोस्ट संपादित की है। कोड इनलाइन को शामिल करने के लिए एसओ पर प्रश्नों के लिए यह अधिक उपयुक्त है क्योंकि लिंक कभी मरने पर सवाल बेकार हो जाएगा। – IKavanagh

+0

आपको बहुत धन्यवाद – user3665396

उत्तर

8

श्रोता का उपयोग करना है कि सीएसएस चार्ट में एक चार्ट और मीडिया के प्रश्नों के लिए पुनर्प्रवाहित ट्रिगर किया जाएगा सेट आकार में मुद्रित किया जाना चाहिए जब एक वेबसाइट को प्रिंट ।

जे एस:

$(function() { 
    Highcharts.setOptions({ // Apply to all charts 
     chart: { 
      events: { 
       beforePrint: function() { 
        this.oldhasUserSize = this.hasUserSize; 
        this.resetParams = [this.chartWidth, this.chartHeight, false]; 
        this.setSize(600, 400, false); 
       }, 
       afterPrint: function() { 
        this.setSize.apply(this, this.resetParams); 
        this.hasUserSize = this.oldhasUserSize; 
       } 
      } 
     } 
    }); 

    $('#container').highcharts({ 
     title: { 
      text: 'Rescale to print' 
     }, 
     subtitle: { 
      text: 'Click the context menu and choose "Print chart".<br>The chart size is set to 600x400 and restored after print.' 
     }, 
     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 
     series: [{ 
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] 
     }] 
    }); 

    var printUpdate = function() { 
     $('#container').highcharts().reflow(); 
    }; 

    if (window.matchMedia) { 
     var mediaQueryList = window.matchMedia('print'); 
     mediaQueryList.addListener(function (mql) { 
      printUpdate(); 
     }); 
    } 
}); 

सीएसएस:

@page { 
    size: A4; 
    margin: 0; 
} 
@media print { 
    html, body { 
     padding:0px; 
     margin:0px; 
     width: 210mm; 
     height: 297mm; 
    } 
    #container { 
     float:left; 
     padding: 0px; 
     margin: 0px; 
     width: 80%; 
    } 
} 

HTML:

<script src="http://code.highcharts.com/highcharts.js"></script> 
<script src="http://code.highcharts.com/modules/exporting.js"></script> 
<div id="container" style="height: 400px;"></div> 

JSFiddle: बेहतर प्रभाव के लिए पूर्ण स्क्रीन परिणाम में http://jsfiddle.net/w4ro5xb7/13/

टेस्ट: 0,123,

+0

हे कैस्पर, क्या यह नवीनतम क्रोम संस्करण में काम करता है? हम प्रिंट से पहले पता लगाने की कोशिश कर रहे हैं, लेकिन यह क्रोम में दिखता है, जब आप सिस्टम 'प्रिंट' बटन का उपयोग करते हैं, तो यह चार्ट का आकार बदलना/रीफ्लोइंग नहीं कर रहा है। – plusz

+0

हाय @ प्लसज़ - यहां इस कोड के साथ प्रयास करें (ऐसा लगता है कि यह क्रोम में ठीक काम कर रहा है): http://jsfiddle.net/uzp1vmLb/35/ –

0

यहां विभिन्न समाधान का मिश्रण, exporting.js की कोई जरूरत नहीं के साथ (जो पृष्ठ पर सभी रेखांकन के लिए बटन निर्यात जोड़ता ...)

आकार स्वचालित रूप से पुनः पैमाना है, प्रिंट के बाद रीसेट है।

StackOverflow करने के लिए आईई

पर
window.onbeforeprint = function() { 
    $(Highcharts.charts).each(function(i,chart){ 
     chart.oldhasUserSize = chart.hasUserSize; 
     chart.resetParams = [chart.chartWidth, chart.chartHeight, false]; 

     var height = chart.renderTo.clientHeight; 
     var width = chart.renderTo.clientWidth; 
     chart.setSize(width, height); 
    }); 
} 
window.onafterprint = function() { 
    $(Highcharts.charts).each(function(i,chart){ 
     chart.setSize.apply(chart, chart.resetParams); 
     chart.hasUserSize = chart.oldhasUserSize; 
    }); 
} 
+0

आपने किस संस्करण के साथ इसका परीक्षण किया? मुझे इस प्रिंटिंग समस्या के साथ कुछ परेशानी हो रही है लेकिन यह स्निपेट फ़ायरफ़ॉक्स और न ही इंटरनेट एक्सप्लोरर पर काम नहीं करेगा हालांकि यह त्रुटियों के बिना निष्पादित करता है। आईई संस्करण: 11.0.9 6 | फ़ायरफ़ॉक्स संस्करण: 51.0 | हाइचार्ट्स: 3.0 – JorgeGRC

संबंधित मुद्दे