1. 程式人生 > >javascript打印發票

javascript打印發票

幾個月前,公司的某一個專案需要連線到印表機列印訂單發票,利用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>