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