js利用window.print實現局部打印方法

1、局部打印,打印單獨的一部份內容css

方法:爲要打印的內容設置單獨的id名,新開窗口並打印。html

舉例以下:ide

一、html函數

<div id="pulPrint">  
  我是要打印的內容
</div>
<div class="btn btn-primary print-btn">打印</div>

二、jsthis

$(".print-btn").on("click",function(){
    printsingle("pulPrint");    
})
//局部打印   這裏的printpage是id
function printsingle(printpage){
    var headstr="<html><head><title></title></head><body>";
    var footstr="</body></html>";
    var newstr=document.all.item(printpage).innerHTML;   
    var oldstr=document.body.innerHTML;
    var myWindow=window.open('','newwindow','fullscreen=yes,location=no,menubar=no,status=no,titlebar=no,toolbar=no');
    myWindow.document.body.innerHTML=headstr+newstr+footstr; 
  myWindow.print();
    setTimeout(function(){
        myWindow.close();
    },300);
    return false;
}

 2、選中多塊區域並打印,舉例以下spa

1.html.net

<div class="wrap">  
  <!-- <div id="pulPrint">我是單個打印</div> -->
  我是wrap
  <div class="print-item">
      <p>打印部分一</p>
      <div>
        <strong>粗體</strong>
        <a href="http://www.cnblogs.com/kangby/">個人博客連接</a>
      </div>
  </div>
  <p>普通訊息,不打印</p>
  <div class="print-item">
    <p>打印部分二</p>
  </div>
   <p>啦啦啦~~,不打印,我是搗亂的~</p>
</div>

2.jsssr

$(".print-btn").on("click",function(){
    var printVal='';
    $(".print-item").each(function(){
        printVal +=$(this).html();  
    });
    if(printVal==""){
      swal("請勾選您要打印的內容");
    }else{
      pulsePrint(printVal);
    }
})
//這裏的printmsg獲取的是html內容,注意打印頁面樣式調整是在<style></style>中進行
function pulsePrint(printmsg){
    var headstr="<html><head><title></title></head><style>.print-item{display:block;font-size:20px;margin-top:30px;}</style><body>";
    var footstr="</body></html>";
    var newstr=printmsg;   
    var oldstr=document.body.innerHTML;
    var myWindow=window.open('','newwindow','fullscreen=yes,location=no,menubar=no,status=no,titlebar=no,toolbar=no');
    myWindow.document.body.innerHTML=headstr+newstr+footstr; 
  myWindow.print();
    setTimeout(function(){
        myWindow.close();
    },300);
    return false;
}

3、打印強制分頁,本身設定到某個地方打印的時候直接分頁code

利用 csshtm

{ page-break-after: always; /*在元素後插入分頁符。*/ }
{ page-break-before: always; /*在元素前插入分頁符。*/ }

舉例以下:

1.直接在html頁經過行內樣式設置,js不變

<!--直接在上面第二個案例的html中修改,js不變,給div加了style="page-break-before:always;"-->
<div class="wrap">  
  我是wrap
  <div class="print-item">
      <p>打印部分一</p>
      <div style="page-break-before:always;">
        <strong>粗體</strong>
        <a href="http://www.cnblogs.com/kangby/">個人博客連接</a>
      </div>
  </div>
</div>

2.js中 headstr變量中的<style></style>中加了一個class名,html直接引用改class名。(注意:要在打印頁面寫入該class樣式)

(1)、html,仍然在案例二代碼基礎上修改

<div class="wrap">  
  我是wrap
  <div class="print-item">
      <p>打印部分一</p>
      <div class="pageBreak">
        <strong>粗體</strong>
        <a href="http://www.cnblogs.com/kangby/">個人博客連接</a>
      </div>
  </div>
</div>

(2)、js,案例二代碼上修改,點擊事件不變,只是在函數內加了一個class 的樣式

//這裏的printmsg獲取的是html內容,注意打印頁面樣式調整是在<style></style>中進行
function pulsePrint(printmsg){
    var headstr="<html><head><title></title></head><style>.print-item{display:block;font-size:20px;margin-top:30px;}.pageBreak{page-break-before: always;}</style><body>";
    var footstr="</body></html>";
    var newstr=printmsg;   
    var oldstr=document.body.innerHTML;
    var myWindow=window.open('','newwindow','fullscreen=yes,location=no,menubar=no,status=no,titlebar=no,toolbar=no');
    myWindow.document.body.innerHTML=headstr+newstr+footstr; 
  myWindow.print();
    setTimeout(function(){
        myWindow.close();
    },300);
    return false;
}

關於打印的css詳情,可參考  CSS 打印屬性(Print)

4、window.print()圖片打印

一、html中的圖片地址要注意 路徑問題,最好是絕對路徑,舉例以下

<div class="print-item">
      <p>打印部分一</p>
      <div class="pageBreak">
        <strong>粗體</strong>
        <img src="file:///D:/text/img/logo.png" alt="">
        <a href="http://www.cnblogs.com/kangby/">個人博客連接</a>
      </div>
 </div>
View Code

二、js 中打印時 要注意圖片的加載問題

若是新窗口的內容中存在圖片而打印中圖片未出來時,說明圖片路徑已是正確的,要判斷圖片加載。

額,下面是一個偷懶的小辦法,其餘的可自行百度或者參考下面的連接

//在案例二js代碼基礎上改動
//當打印內容中只有一張圖片或者最後一張圖片最大的時候能夠用用,具體狀況自行分析使用
function pulsePrint(printmsg){
    var headstr="<html><head><title></title></head><style>.print-item{display:block;font-size:20px;margin-top:30px;}</style><body>";
    var footstr="</body></html>";
    var newstr=printmsg;   
    var oldstr=document.body.innerHTML;
    var myWindow=window.open('','newwindow','fullscreen=yes,location=no,menubar=no,status=no,titlebar=no,toolbar=no');    myWindow.document.body.innerHTML=headstr+newstr+footstr; 
    var imgNum = myWindow.document.getElementsByTagName("img").length;
    if(imgNum>0){
      myWindow.document.getElementsByTagName("img")[imgNum -1].onload = function(){
        setTimeout(function(){
          myWindow.print();
        },300);
        setTimeout(function(){
          myWindow.close();
        },600);
      }
    }else{
      myWindow.print();
      setTimeout(function(){
        myWindow.close();
      },300);
    }
    return false;
}
View Code

也可參考   js打印window.print()圖片打印

相關文章
相關標籤/搜索