使用jqPrint.js調用瀏覽器打印界面,打印網頁中的某一部分該部分含有ECharts圖表


1、准備好js文件(我用的是谷歌瀏覽器)

這個文件是為了防止你的jQuery版本過高而不適配的問題

 

這是調用瀏覽器打印的js插件

 

 2、引入js文件

1 <script src="js/jquery.jqprint-0.3.js"></script>
2 <script src="js/jquery-migrate-1.2.1.min.js"></script>

3、給你的網頁添加一個按鈕來出發打印事件

1 <input type="button" onclick="printClassReport()" value="打印班級報告"/>

4、為了保持打印預覽的時候你的網頁樣式不會發生變化,應該打印一個全局的div,然后再講不想打印的部分隱藏起來,打印完了再把它們顯示出來

 

 

 5、打印的時候將echarts轉成圖片,讓圖片顯示echarts隱藏,不然的話echarts打印的時候是空白。(沒有echarts圖表的用戶請自動忽略)

 

 6、編寫js的處理邏輯

 1     <script src="js/jquery.jqprint-0.3.js"></script>
 2     <script src="js/jquery-migrate-1.2.1.min.js"></script>
 3     <script type="text/javascript">
 4         function printClassReport(){
 5             // 獲取echarts圖表
 6             var myChart1 = echarts.init(document.getElementById('report_classanalyze')); 
 7             var myChart2 = echarts.init(document.getElementById('report_overall'));
 8             var myChart3 = echarts.init(document.getElementById('report_studentPassRank'));
 9             var myChart4 = echarts.init(document.getElementById('report_problemSubmitRank'));
10             //myChart2.setOption(option3);
11             // 獲取圖片(此時還未實現轉換暫時處於隱藏狀態)
12             var img1 = document.getElementById('img_report_classanalyze');
13             var img2 = document.getElementById('img_report_overall');
14             var img3 = document.getElementById('img_report_studentPassRank');
15             var img4 = document.getElementById('img_report_problemSubmitRank');
16             // 將圖表轉換成圖片,並保存在圖片域當中
17             img1.src = myChart1.getDataURL({
18                 pixelRatio: 2,
19                 backgroundColor: '#fff'
20             });
21             img2.src = myChart2.getDataURL({
22                 pixelRatio: 2,
23                 backgroundColor: '#fff'
24             });
25             img3.src = myChart3.getDataURL({
26                 pixelRatio: 2,
27                 backgroundColor: '#fff'
28             });
29             img4.src = myChart4.getDataURL({
30                 pixelRatio: 2,
31                 backgroundColor: '#fff'
32             });
33             // 先把圖表隱藏,讓圖片先顯示出來
34             document.getElementById('img_report_classanalyze').style.display="block";
35             document.getElementById('img_report_overall').style.display="block";
36             document.getElementById('img_report_studentPassRank').style.display="block";
37             document.getElementById('img_report_problemSubmitRank').style.display="block";
38             document.getElementById('report_classanalyze').style.display="none";
39             document.getElementById('report_overall').style.display="none";
40             document.getElementById('report_studentPassRank').style.display="none";
41             document.getElementById('report_problemSubmitRank').style.display="none";
42             // 隱藏不想顯示的區域
43             $(".content_l").hide();
44             $(".search").hide();
45             $("form").hide();
46             // 打印選定的web頁面
47             $("#print").jqprint();
48             // 將之前隱藏的頁面重新顯示出來
49             $("form").show();
50             $(".search").show();
51             $(".content_l").show();
52             // 再將圖片隱藏,將動態echarts突變顯示出來
53             document.getElementById('img_report_classanalyze').style.display="none";
54             document.getElementById('img_report_overall').style.display="none";
55             document.getElementById('img_report_studentPassRank').style.display="none";
56             document.getElementById('img_report_problemSubmitRank').style.display="none";
57             document.getElementById('report_classanalyze').style.display="block";
58             document.getElementById('report_overall').style.display="block";
59             document.getElementById('report_studentPassRank').style.display="block";
60             document.getElementById('report_problemSubmitRank').style.display="block";
61         }
62     </script>

我有四張echarts圖表所以js代碼比較繁瑣,如果你的echarts表只有一張,把代碼中多余的東西刪除即可。

 

展示區:

 

 

 

 打印的時候只顯示了紅色框里的內容。

最后祝成功!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM