vue項目中遇到的打印,以及處理重新排版后不顯示echarts圖片問題。


1. 項目中用到的打印

頁面:

css: 控制好寬度一般A4 我調試的是794px多了放不下,小了填不滿。當時多頁打印的時候,一定要控制好每一個頁面內容顯示的高度不要超過一個頁面,當然根據自己項目來。

由於我的項目是每一個頁面固定一個頁尾部,所以當顯示的時候正常排版顯示。但是一旦點擊了打印預覽需要修改這個區域的css讓他固定在每一個頁面的底部。

 

js代碼,點擊打印后執行(如果右鍵點擊打印就會亂,所以給一個打印預覽按鈕讓用戶直接點):打印前先給要打印區域排版,這樣預覽打印的時候就不會亂,只打印要打印的內容。然后延遲調用系統的打印預覽后即便用戶沒有打印,頁面已經排好版了 這個時候右鍵打印也是可以的了。

print(){
        var that = this; $('.operatorBox').css({ //從新繪制這塊區域讓它固定在每一個頁面底部 'position':'fixed', 'bottom':'15px' })//此方法僅限單頁 var div_print = document.getElementById('print-area'); var newstr = div_print.innerHTML; var oldstr = document.body.innerHTML; document.body.innerHTML = newstr;  // that.showCharts() // console.log(this.imgBase) // 吧charts圖表弄成圖片,在挨邊替換空白圖表 /* Object.keys(this.imgBase).forEach(function(key){ document.getElementById(key).innerHTML="<img style='width:100%' src="+that.imgBase[key]+">" }); */  setTimeout(function(){ window.print(); alert('如未打印,請右鍵選擇打印!')  // window.location.reload(); // document.body.innerHTML = oldstr; },1000) }

效果:

取消打印后頁面排版已經改變了:

 

2. echarts打印,echarts如果是直接打印沒問題,但是大多數情況是需要重新排列要打印的(就是不直接打印頁面顯示的,需要自定義打印內容),自定義打印的時候需要拿到要打印的html從新排版,但是這個時候拿不到echarts生成的圖的,會顯示空白。

所以解決方案是利用echarts的轉成圖片功能,提前把canvas圖表轉成圖片,記錄下來然后在從新排列的時候從新替換,或者是當echarts生成圖片的時候立馬換掉(這樣處理顯示效果不好)。

下面我的處理是把得到的圖片全部按照echarts的id記錄到一個對象里面,到時候在統一獲取:

 

 


免責聲明!

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



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