javascript打印發票
阿新 • • 發佈:2018-12-18
幾個月前,公司的某一個專案需要連線到印表機列印訂單發票,利用javascript的window.print()
呼叫列印頁面進行列印。隨著時間的推移,客戶那邊每次打印發票都需要手動進行切割。一個訂單的發票分為客戶端和商家端,如果提交兩個訂單,那就需要列印四張發票,現在出現的問題是所有的發票都列印在一張發票上面,需要使用者每次去手動撕下來。網上說用page-break-after: always
,但是這個只對切好的紙張有用,對於連續需要切割的紙張無用…心塞
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文件</title> <script language="javascript"> //列印程式碼 function Print() { var printStr = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head><body >"; var content = ""; var str = document.getElementById('page1').innerHTML; //獲取需要列印的頁面元素 ,page1元素設定樣式page-break-after:always,意思是從下一行開始分割。 content = content + str; str = document.getElementById('page2').innerHTML; //獲取需要列印的頁面元素 content = content + str; printStr = printStr + content + "</body></html>"; var pwin = window.open("Print.htm", "print"); //如果是本地測試,需要先新建Print.htm,如果是在域中使用,則不需要 pwin.document.write(printStr); pwin.document.close(); //這句很重要,沒有就無法實現 pwin.print(); } </script> </head> <body> <div> <input type="button" value="列印" onclick="Print()" /> </div> <div id="page1"> <table width="100%" border="0" cellpadding="0" cellspacing="0" style="page-break-after: always"> <tr> <td>第一頁列印內容</td> </tr> </table> </div> <div id="page2"> <table width="100%" border="0" cellpadding="0" cellspacing="0" id="content"> <tr> <td>第二頁列印內容</td> </tr> </table> </div> </body> </html>