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記錄到一個對象裏面,到時候在統一獲取:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章