打印知识点总结

最近在搞打印,分页打印问题困惑较长时间,经过查询资料总结出关于打印相关问题供参考:

一、小票打印问题:直接用的是佳博的小票打印机,型号:GP-L80160,本机windows10

      直接安装打印机驱动即可打印,对应驱动: GAINSCHA 80mm系列打印机驱动程序V18

驱动下载地址:https://pan.baidu.com/s/1-tSKXkowJkm8zICcBeovxw

密码:irdm

安装过程供参考:

 安装完驱动后在设备和打印机里也可以进行设置:

 

 

注意:边距选择“无”则打印出来的小票无边距,字体也会较大。如果选择默认,则边距较大且字体较小。以上使用的是谷歌浏览器!!!

网上找了一个关于打印的html源码:貌似只适用于IE浏览器且IE浏览器要允许使用ActiveX控件,谷歌浏览器点击没有反应。

<!DOCTYPE html>
<html lang="en">
<head>
<title>页面打印</title>
<!--media=print 这个属性在打印时有效 有些不想打印出来的分页打印的都可以应用这类样式进行控制 在非打印时是无效的(可从打印预览中看到效果)-->
<style media=print>
/* 应用这个样式的在打印时隐藏 */
.noPrint {
display: none;
}

/* 应用这个样式的,从那个标签结束开始另算一页,之后在遇到再起一页,以此类推 */
.page {
page-break-after: always;   ///这个是分页标识
}
</style>

<!-- 这个是普通样式 -->
<style type="text/css">
.tab td {
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}

.tab {
border-color: #000000 #000000 #000000 #000000;
border-style: solid;
border-top- 2px;
border-right- 2px;
border-bottom- 1px;
border-left- 1px;
}

.hr {
font-family: "宋体";
font-size: 9pt;
}
</style>
<script language="JavaScript" type="text/JavaScript">
var hkey_root, hkey_path, hkey_key;
hkey_root = "HKEY_CURRENT_USER";
hkey_path = "//Software//Microsoft//Internet Explorer//PageSetup//";
//这个是用来设置打印页眉页脚的,你可以设置为空或者其它
try{
var RegWsh = new ActiveXObject("WScript.Shell");
hkey_key="header";
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key, "&w&b页码,&p/&P");
hkey_key="footer";
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"");
}catch(e){
alert(e.description());
}
</script>
</head>
<body bgcolor="white">
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
<thead class="noPrint">
<tr>
<td align="center" colspan="3">
<center class="NoPrint">
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0></OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6) />
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1) />
<input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1) />
<!--
关于这个组件还有其他的用法,列举如下:
WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示
-->
</center>
</td>
</tr>
</thead>
<tr>
<td align="center" colspan="3" style="font-size: 24px">
<b>报告印章申请表</b>
</td>
</tr>
<tr>
<td align="left" colspan="2">编号:A002</td>
<td align="right"></td>
</tr>
<tr>
<td colspan="3">
<table class="tab" cellSpacing="0" cellPadding="0" width="100%">
<tr align="center" height="23">
<td width="10%" height="23"><b>编号</b></td>
<td width="5%"><b>份数</b></td>
<td width="12%"><b>项目/级别编号</b></td>
<td width="12%"><b>单位</b></td>
<td width="12%"><b>项目名称</b></td>
<td width="12%"><b>工程地点</b></td>
<td width="12%"><b>检测项目</b></td>
<td width="7%"><b>单价</b></td>
<td width="8%"><b>数量</b></td>
<td width="10%"><b>总价</b></td>
</tr>
<tr style="font-size: 13px" align="center" height="23">
<td>A14785</td>
<td>5</td>
<td>A1546/8975</td>
<td>中国广东广州</td>
<td>BRT工程</td>
<td>广州天河</td>
<td>BRT工程</td>
<td>¥999999999.99</td>
<td>20</td>
<td>20*¥999999999.99</td>
</tr>
<tr align="center" height="23">
<td colspan="2">备注</td>
<td colspan="8"></td>
</tr>
</table>
</td>
</tr>
</table>
<hr class="noprint" width="100%" size="2"/>
<div class="page"></div>
<table class="tab" cellSpacing="0" cellPadding="0" width="100%">
<tr align="center" height="23">
<td width="10%" height="23"><b>编号</b></td>
<td width="5%"><b>份数</b></td>
<td width="12%"><b>项目/级别编号</b></td>
<td width="12%"><b>单位</b></td>
<td width="12%"><b>项目名称</b></td>
<td width="12%"><b>工程地点</b></td>
<td width="12%"><b>检测项目</b></td>
<td width="7%"><b>单价</b></td>
<td width="8%"><b>数量</b></td>
<td width="10%"><b>总价</b></td>
</tr>
<tr style="font-size: 13px" align="center" height="23">
<td>A14785</td>
<td>5</td>
<td>A1546/8975</td>
<td>中国广东广州</td>
<td>BRT工程</td>
<td>广州天河</td>
<td>BRT工程</td>
<td>¥999999999.99</td>
<td>20</td>
<td>20*¥999999999.99</td>
</tr>
<tr align="center" height="23">
<td colspan="2">备注</td>
<td colspan="8"></td>
</tr>
</table>

<div class="page"></div>
<table class="tab" cellSpacing="0" cellPadding="0" width="100%">
<tr align="center" height="23">
<td width="10%" height="23"><b>编号</b></td>
<td width="5%"><b>份数</b></td>
<td width="12%"><b>项目/级别编号</b></td>
<td width="12%"><b>单位</b></td>
<td width="12%"><b>项目名称</b></td>
<td width="12%"><b>工程地点</b></td>
<td width="12%"><b>检测项目</b></td>
<td width="7%"><b>单价</b></td>
<td width="8%"><b>数量</b></td>
<td width="10%"><b>总价</b></td>
</tr>
<tr style="font-size: 13px" align="center" height="23">
<td>A14785</td>
<td>5</td>
<td>A1546/8975</td>
<td>中国广东广州</td>
<td>BRT工程</td>
<td>广州天河</td>
<td>BRT工程</td>
<td>¥999999999.99</td>
<td>20</td>
<td>20*¥999999999.99</td>
</tr>
<tr align="center" height="23">
<td colspan="2">备注</td>
<td colspan="8"></td>
</tr>
</table>

</body>
</html>

 

 关于分页打印问题总结:主要是应用到了:page-break-after: always;   ///这个是分页标识

写了个打印的服务,webapi调用方式,地址:https://pan.baidu.com/s/10HecSW_72tR0O_6SgdcRmA(密码:d22t)   

1.实现分页打印源码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>分页打印</title>
<script type="text/javascript">
//部分打印方法
function doPrint() {
////bdhtml = str;
//console.log(str);
//console.log(window.document.body.innerHTML);
bdhtml = window.document.body.innerHTML;
console.log(bdhtml);
sprnstr = "<!--startprint-->";
eprnstr = "<!--endprint-->";
prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
window.document.body.innerHTML = prnhtml;//页面取到的值实际是传递过来的字符串
window.print();//开始打印
}
</script>
</head>
<body>
<!-- <div style="page-break-after: always" >第一页:这是第一个页的内容<div id="page1"></div></div>
<div style="page-break-after: always" >第二页: 这是第二个页的内容<div><span>早餐券</span></div></div>
<div style="page-break-after: always" >第三页: 这是第三个页的内容</div> -->
</body>
</html>
<!--startprint-->
<div>
<input type="button" value="打印" onclick="doPrint()" />
</div>
<div>
<div style="page-break-after: always"> <!--这是实现分页标记---关键地方,有了它才能实现分页,这是第一页 -->
<div id="bill06_part1">
<div id="bill06_part1_title"><span id="HotelName">备课酒店</span></div >
</div >
<div id="bill06_part2">
<div id="bill06_part2_left"><div id="bill06_part2_title"><span>早餐券</span></div></div>
<div id="bill06_part2_right"><div id="bill06_part2_1_img"></div></div>
</div>
<div id="bill06_part3"><div id="bill06_part3_diningInformation"><div id="bill06_part3_diningInformation_top">
<div class="keyDes"><span>用餐时间:</span></div><div class="valueDes"><span id="BreakFastTime">7:00-9:00</span></div > <br />
<div class="keyDes"><span>Time:</span></div ><div class="valueDes" > <span id="BreakFastTime">7:00-9:00</span></div > <br />
<div class="keyDes"><span>用餐地址:</span></div><br /><div class="keyDes"><span>Address:</span></div><div class="valueDes">
<span id="BreakFastAddress">一楼食堂_千家万户</span></div></div></div>
</div>
<div id="bill06_part4">
<div id="bill06_part4_message">
<div id="bill06_part4_message_title"><span>用餐前请出示此券:</span></div>
<div id="bill06_part4_message_content">
<span>Please show this coupon before ordering</span><br />
</div>
</div>
</div>
<div id="bill06_part5">
<div id="bill06_part5_message"><div id="bill06_part5_message_left"><div class="keyDes_All"><span>券号:</span></div><br />
<div class="keyDes_All_Eng"><span>TicketNo:</span></div>
<div class="valueDes_All_Eng"><span id="TicketNo">vyoxkf5LU9NQX</span></div><br />
<div class="keyDes_All"><span>房号:</span></div><br />
<div class="keyDes_All_Eng"><span>RoomNo:</span></div>
<div class="valueDes_All_Eng"><span id="RoomNo">1203</span></div><br />
<div class="keyDes_All"><span>经办人:</span></div><br />
<div class="keyDes_All_Eng"><span>Print:</span></div><div class="valueDes_All_Eng"><span id="CurrentUser">蒋明春</span></div>
</div><div id="bill06_part5_message_right"><div class="keyDes_All"><span>价格:</span></div><br />
<div class="keyDes_All_Eng"><span>Price:</span></div><div class="valueDes_All_Eng"><span id="Price">10.00</span></div><br />
<div class="keyDes_All"><span>有效期:</span></div><br /><div class="keyDes_All_Eng"><span>Validate:</span></div>
<div class="valueDes_All_Eng"><span id="Validate">2019-06-13</span></div><br /><div class="keyDes_All"><span>打印时间:</span></div><br />
<div class="keyDes_All_Eng"><span>PrintTime:</span></div>
<div class="valueDes_All_Eng"><span id="PrintTime">2019-06-12 20:30:40</span></div></div></div>
</div>
</div>
<div style="page-break-after: always"><!--这是实现分页标记---关键地方,有了它才能实现分页,这是第二页 -->
<div id="bill06_part1">
<div id="bill06_part1_title"><span id="HotelName">备课酒店</span></div >
</div >
<div id="bill06_part2">
<div id="bill06_part2_left"><div id="bill06_part2_title"><span>早餐券</span></div></div>
<div id="bill06_part2_right">
<div id="bill06_part2_1_img">
<div id="bill06_part2_1_img_canvas"></div>
<img id="bill06_part2_1_img_src" />
</div>
</div>
</div>
<div id="bill06_part3"><div id="bill06_part3_diningInformation"><div id="bill06_part3_diningInformation_top">
<div class="keyDes"><span>用餐时间:</span></div><div class="valueDes"><span id="BreakFastTime">7:00-9:00</span></div > <br />
<div class="keyDes"><span>Time:</span></div ><div class="valueDes" > <span id="BreakFastTime">7:00-9:00</span></div > <br />
<div class="keyDes"><span>用餐地址:</span></div><br /><div class="keyDes"><span>Address:</span></div><div class="valueDes">
<span id="BreakFastAddress">一楼食堂_千家万户</span></div></div></div>
</div>
<div id="bill06_part4">
<div id="bill06_part4_message">
<div id="bill06_part4_message_title"><span>用餐前请出示此券:</span></div>
<div id="bill06_part4_message_content">
<span>Please show this coupon before ordering</span><br />
</div>
</div>
</div>
<div id="bill06_part5">
<div id="bill06_part5_message"><div id="bill06_part5_message_left"><div class="keyDes_All"><span>券号:</span></div><br />
<div class="keyDes_All_Eng"><span>TicketNo:</span></div>
<div class="valueDes_All_Eng"><span id="TicketNo">vyoxkf5LU9NQX</span></div><br />
<div class="keyDes_All"><span>房号:</span></div><br />
<div class="keyDes_All_Eng"><span>RoomNo:</span></div>
<div class="valueDes_All_Eng"><span id="RoomNo">1203</span></div><br />
<div class="keyDes_All"><span>经办人:</span></div><br />
<div class="keyDes_All_Eng"><span>Print:</span></div><div class="valueDes_All_Eng"><span id="CurrentUser">蒋明春</span></div>
</div><div id="bill06_part5_message_right"><div class="keyDes_All"><span>价格:</span></div><br />
<div class="keyDes_All_Eng"><span>Price:</span></div><div class="valueDes_All_Eng"><span id="Price">10.00</span></div><br />
<div class="keyDes_All"><span>有效期:</span></div><br /><div class="keyDes_All_Eng"><span>Validate:</span></div>
<div class="valueDes_All_Eng"><span id="Validate">2019-06-13</span></div><br /><div class="keyDes_All"><span>打印时间:</span></div><br />
<div class="keyDes_All_Eng"><span>PrintTime:</span></div>
<div class="valueDes_All_Eng"><span id="PrintTime">2019-06-12 20:30:40</span></div></div></div>
</div>
</div>
</div>
<!--endprint-->

 

 

使用拼接内容打印:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<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>

 

JS 实现分页打印:转自:https://www.cnblogs.com/wind-wang/p/6902824.html

在调用window.print()时,可以实现打印效果,但内容太多时要进行分页打印。

在样式中有规定几个打印的样式

page-break-before和page-break-after CSS属性并不会修改网页在屏幕上的显示,这两个属性是用来控制文件的打印方式。

每个打印属性都可以设定4种设定值:auto、always、left和right。其中Auto是默认值,只有在有需要时,才需设定分页符号 (Page breaks)。

page-break-before若设定成always,则是在遇到特定的组件时,打印机会重新开始一个新的打印页。

page-break-before若设定成left,则会插入分页符号,直到指定的组件出现在一个左边的空白页上。

page-break-before若设定成right,则会插入分页符号,直到指定的组件出现在一个右边的空白页上。

page-break-after属性会将分页符号加在指定组件后,而非之前。

在下列程序中您将可以看到这些属性的设定,

 

复制代码
<HTML>
  <HEAD>
    <TITLE>Listing 14-4</TITLE>
  </HEAD>
  <BODY>
    <DIV>This is the first DIV.</DIV>
    <DIV STYLE="page-break-before:always">This is the second DIV.</DIV>
    <DIV STYLE="page-break-after:always">This is the third DIV.</DIV>
    <DIV>This is the fourth DIV.</DIV>
    <DIV STYLE="page-break-before:right">This is the fifth DIV.</DIV>
    <DIV STYLE="page-break-after:right">This is the sixth DIV.</DIV>
    <DIV>This is the last DIV.</DIV>
  </BODY>
</HTML>
复制代码
描述
auto 默认值。如果必要则在元素前插入分页符
always 在元素前插入分页符
avoid 避免在元素前插入分页符
left 在元素之前足够的分页符,一直到一张空白的左页为止
right 在元素之前足够的分页符,一直到一张空白的右页为止
inherit 规定应该从父元素继承 page-break-before 属性的设置

在Dom对象中pageBreakBefore属性

语法:

    Object.style.pageBreakBefore=auto|always|avoid|left|right

复制代码
<html>
  <head>
    <script type="text/javascript">
      function setPageBreak()
      {
        document.getElementById("p2").style.pageBreakBefore="always";
      }
    </script>
  </head>
  <body>
    <p>This is a test paragraph.</p>
    <input type="button" onclick="setPageBreak()" value="Set page-break" />
    <p id="p2">This is also a test paragraph.</p>
  </body>
</html>
复制代码

 

 

js控制分页打印、打印分页示例:

转自:https://www.jb51.net/article/46542.htm

代码如下:


<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<HTML> 
<HEAD> 
<TITLE>javascript打印-打印页面设置-打印预览代码</TITLE> 
<META http-equiv=Content-Type content="text/html; charset=gb2312" /> 
<style media=print> 
.Noprint{display:none;} 
.PageNext{page-break-after: always;} 
</style> 
<SCRIPT language=javascript> 
  function printsetup(){ 
  // 打印页面设置 
  wb.execwb(8,1); 
  } 
  function printpreview(){ 
  // 打印页面预览   
  wb.execwb(7,1); 
  } 
  function printit() 
  { 
  if (confirm('确定打印吗?')) { 
  wb.execwb(6,6) 
  } 
  } 
</SCRIPT> 

</HEAD> 
<BODY> 

<DIV align=center> 
<OBJECT id=wb height=0 width=0 
classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 name=wb></OBJECT> 
<INPUT onclick=javascript:printit() type=button value=打印 name=button_print /> 
<INPUT onclick=javascript:printsetup(); type=button value=打印页面设置 name=button_setup /> 
<INPUT onclick=javascript:printpreview(); type=button value=打印预览 name=button_show /> 
</DIV> 
111</br> 
111</br> 
111</br> 
<div class="PageNext"></div> 
222</br> 
222</br> 
222</br> 
<div class="PageNext"></div> 
333</br> 
333</br> 
333</br> 
<div class="PageNext"></div> 
444</br> 
444</br> 
444</br> 
<div class="PageNext"></div> 
555</br> 
555</br> 
555</br> 
</BODY> 
</HTML> 
复制代码代码如下:

<html> 
<title>JS 分页批量打印解决方案(只支持IE)</title> 
<script language="javascript"> 
function printWithAlert() { 
document.all.WebBrowser.ExecWB(6,1); 

function printWithoutAlert() { 
document.all.WebBrowser.ExecWB(6,6); 

function printSetup() { 
document.all.WebBrowser.ExecWB(8,1); 

function printPrieview() { 
document.all.WebBrowser.ExecWB(7,1); 

function printImmediately() { 
document.all.WebBrowser.ExecWB(6,6); 
window.close(); 

</script> 
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 style="display:none"> 
</OBJECT> 
</noscript> 
<style media=print> 
.Noprint{display:none;} .PageNext{page-break-after: always;} 
</style> 
<table align="center" class="NOPRINT"> 
<tr> 
<td align="center"><BUTTON title=打印 onclick=printWithAlert()>打印</BUTTON> 
<BUTTON title=直接打印 onclick=printWithoutAlert()>直接打印</BUTTON> 
<input type=button value="打印设置" onClick="printSetup()" > 
<button onclick ='printPrieview()' title='打印预览...' >打印预览</button></td> 
</tr> 
</table> 
<div class="NOPRINT"> 以下为打印区:<br> 
</div> 
<hr size=1 noshadow color=black class="NOPRINT" > 
<table class="PageNext" > 
<tr> 
<td colspan=2> 
第一页的内容 
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 
</td> 
</tr> 
</table> 
<hr size=1 noshadow color=black class="NOPRINT" > 
<div class="PageNext"> 
第二页内容 
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 
</div> 
<hr size=1 noshadow color=black class="NOPRINT" > 
第三页内容 
</html> 

 

 

补充:分页打印demo源码:对应自己项目:Yh.Hms.Web

页面:06.html

<html>
<head>
<meta charset="utf-8" />
<title>
</title>
<link rel="stylesheet" href="../CSS/06.css" />
<script src="../JS/jquery-1.10.2.min.js"></script>
<script src="../JS/jquery.qrcode.min.js"></script>
<script src="../JS/06.js"></script>
<script src="../JS/printhandler.js"></script>
<script src="../../../../Scripts/universal/ajax_REST-1.0.js"></script>
<script src="../../../../Scripts/universal/unitity.js"></script>
</head>
<body>
<!--startprint-->
<div id="template">
<div id="bill06_part0" style="page-break-after: always">
<div id="bill06_part1">
<div id="bill06_part1_title">
<span id="HotelName"name="hotelName"></span>
</div>
</div>
<div id="bill06_part2">
<div id="bill06_part2_left">
<div id="bill06_part2_title">
<span>早餐券</span>
</div>
</div>
<div id="bill06_part2_right">
<div id="bill06_part2_1_img">
<!--二维码-->
<div id="bill06_part2_1_img_canvas" class="qrCode"></div>
</div>
</div>
</div>
<div id="bill06_part3">
<div id="bill06_part3_diningInformation">
<div id="bill06_part3_diningInformation_top">
<div class="keyDes"><span>用餐时间:</span></div><div class="valueDes"><span id="BreakFastTime" name="breakfastTime"></span></div><br />
<div class="keyDes"><span>Time:</span></div><div class="valueDes"><span id="BreakFastTime" name="breakfastTime"></span></div><br />
<div class="keyDes"><span>用餐地址:</span></div><br />
<div class="keyDes"><span>Address:</span></div> <div class="valueDes"><span id="BreakFastAddress" name="breakfastAddress"></span></div>
</div>
</div>
</div>
<div id="bill06_part4">
<div id="bill06_part4_message">
<div id="bill06_part4_message_title"><span>用餐前请出示此券:</span></div>
<div id="bill06_part4_message_content">
<span>Please show this coupon before ordering</span><br />
</div>
</div>
</div>
<div id="bill06_part5">
<div id="bill06_part5_message">
<div id="bill06_part5_message_left">
<div class="keyDes_All"><span>券号:</span></div><br />
<div class="keyDes_All_Eng0"><span>TicketNo:</span></div> <div class="valueDes_All_Eng0"><span id="TicketNo" class="underline" ></span></div><br />
<div class="keyDes_All"><span>房号:</span></div><br />
<div class="keyDes_All_Eng"><span>RoomNo:</span></div> <div class="valueDes_All_Eng"><span id="RoomNo" class="underline" ></span></div><br />
<div class="keyDes_All"><span>经办人:</span></div><br />
<div class="keyDes_All_Eng"><span>Print:</span></div> <div class="valueDes_All_Eng"><span id="CurrentUser" class="underline" name="printUser" ></span></div>
</div>
<div id="bill06_part5_message_right">
<div class="keyDes_All"><span>价格:</span></div><br />
<div class="keyDes_All_Eng1"><span>Price:</span></div> <div class="valueDes_All_Eng1"><span id="Price" name="price" class="underline" ></span></div><br />
<div class="keyDes_All"><span>有效期:</span></div><br />
<div class="keyDes_All_Eng1"><span>Validate:</span></div> <div class="valueDes_All_Eng1"><span id="Validate" name="validDate" class="underline" ></span></div><br />
<div class="keyDes_All"><span>打印时间:</span></div><br />
<div class="keyDes_All_Eng1"><span>PrintTime:</span></div> <div class="valueDes_All_Eng1"><span id="PrintTime" name="printTime" class="underline" ></span></div>
</div>
</div>
</div>
</div>
</div>
<!--endprint-->
</body>
</html>

页面对应06.js:

/// <reference path="../../../../Scripts/universal/unitity.js"/>  <!--在06.js中引用unitity.js文件-->

/*早餐券 add by jackjiang20190606*/
//定义全局变量
var coupons = "";
var re = "";
var price = "";
var hotelcode = "";
var validDate = "", couponNo = "";

$(function () {
coupons = GetQueryString("ticketNos").split(',');//早餐券号
price = Number(GetQueryString("price")).toFixed(2);//早餐券价格,toFixed(2)金额保留2位
let accountNos = GetQueryString("accountNos");//单号
hotelcode = GetQueryString("hotelCode");//酒店编号

if (hotelcode != null && hotelcode.length > 6) {
alert("参数异常请刷新页面");
}
let div_qrCode = "#bill06_part2_1_img_canvas";//二维码
let div_Span_ticketNo = "#TicketNo";//券号

for (let i = 0; i < coupons.length; i++) {

let tempValues = coupons[i].split('|');
couponNo = tempValues[0];//早餐券号
validDate = tempValues[1].substring(0,10);//有效期转化为2019/06/06格式

let code = "{0}|{1}".format(hotelcode, couponNo);
let qrCodeX = $(div_qrCode).qrcode(
{
render: "canvas",
100,
height: 100,
text: code,
correctLevel: 1
}
);
let canvas = $(div_qrCode + " canvas")[0];
let base64 = canvas.toDataURL("image/png");
let img1 = "<img src='{0}'/>".format(base64);
qrCodeX.html(img1);//二维码图片
$(div_Span_ticketNo).html(couponNo);//券号
}
GetPrintBreakfastTicketData(accountNos);
});

//部分打印方法
function doPrint() {
////bdhtml = str;
//console.log(str);
//console.log(window.document.body.innerHTML);
//bdhtml = window.document.body.innerHTML;
//console.log(bdhtml);
//sprnstr = "<!--startprint-->";
//eprnstr = "<!--endprint-->";
//prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
//prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
//window.document.body.innerHTML = prnhtml;//页面取到的值实际是传递过来的字符串
window.print();
}
//获取传输参数
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}

function GetPrintBreakfastTicketData(accountNos) {
let ajaxUrl = "/Report/Print/GetBreakfastDataOfPrint";
let successFunc = FillBreakfastTemplateInfo;
let jsonText = { AccountNos: accountNos };

ajax_json_postV2(ajaxUrl, jsonText, 10000, true, successFunc, null, null);
}

function FillBreakfastTemplateInfo(jsonModel) {
if (!jsonModel.Success) {
return;
}
let model = jsonModel.Data;
//批量设置模版数值
$("[name=hotelName]").html(model.HotelName);//酒店名称
$("[name=breakfastTime]").html(model.BreakfastTime);//用餐时间
$("[name=breakfastAddress]").html(model.BreakfastAddress);//用餐地址
$("[name=printUser]").html(model.PrintUser);//打印人
$("[name=printTime]").html(model.PrintTime);//打印时间


let roomNos = model.RoomNos.split(',');
var div_qrCode = "#bill06_part2_1_img_canvas";//二维码
var div_Span_ticketNo = "#TicketNo";//券号
var div_Span_roomNo = "#RoomNo";//房间号
for (var i = 0; i < coupons.length; i++) {

//批量设置早餐券房间
let roomNo = !roomNos[i] ? roomNos[0] : roomNos[i];
$(div_Span_roomNo).html(roomNo);//房间号

let tempValues = coupons[i].split('|');
couponNo = tempValues[0];//早餐券号
validDate = tempValues[1].substring(0, 10);//有效期转化为2019/06/06格式

let code = "{0}|{1}".format(hotelcode, couponNo);
let qrCodeX = $(div_qrCode).qrcode(
{
render: "canvas",
100,
height: 100,
text: code,
correctLevel: 1
}
);
let canvas = $(div_qrCode + " canvas")[0];
let base64 = canvas.toDataURL("image/png");
let img1 = "<img src='{0}'/>".format(base64);
qrCodeX.html(img1);//二维码图片

$(div_Span_ticketNo).html(couponNo);//券号
$(div_Span_roomNo).html(roomNo);//房间号

//批量设置模板数值
$("[name=price]").html(price);//早餐券价格
$("[name=validDate]").html(validDate);//有效期

var div_part0Content = document.getElementById('template').innerHTML;
re += '<div>' + div_part0Content +
'</div>';
}
window.document.body.innerHTML = re;//为页面元素赋值
//打印
doPrint();
//打印后关闭当前窗口
let index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}

页面对应06.css

body {
margin-top: 0px;
}
#bill06_part0 {
300px;
height: auto;
margin-top: 0px;
}

#bill06_part1 {
/*background-color:red;*/
300px;
height: 70px;
margin-top: 0px;
}
#bill06_part1_title {
/*background-color: darkgrey;*/
float: left;
300px;
height: auto;
text-align: center;
font-size: 15pt;
/*opacity: .95;*/
margin-top: 0px;
font-weight: bold;
}

#bill06_part1_title span {
300px;
height: auto;
text-align: center;
font-size: 15pt;
/*opacity: .95;*/
margin-top: 0px;
font-weight: bold;
font-family: KaiTi;
}
/*part2 早餐券和二维码*/
#bill06_part2 {
/*background-color:red;*/
300px;
height: 100px;
}

#bill06_part2_left {
180px;
height: 100px;
float: left;
}

#bill06_part2_title span {
float: left;
180px;
height: auto;
text-align: center;
font-size: 20pt;
/*opacity: .95;*/
margin-top: 15px;
/*font-weight: 900;*/ /*bold*/
font-family: KaiTi;
}

#bill06_part2_right {
120px;
height: 100px;
float: right;
}

/*二维码*/
#bill06_part2_1_img {
/*background-color: darkgray;*/
padding-top: 5px;
100px;
height: 100px;
float: right;
/*opacity: .65;*/
}
.qrCode {
float: right;
}


#PaymentTypeName {
font-size: 9pt;
font-weight: bold;
}

#Balance {
font-size: 9pt;
font-weight: bold;
}

/*part3用餐信息*/
#bill06_part3 {
/*background-color:red;*/
300px;
height: 100px;
}

#bill06_part3_diningInformation_top {
/*background-color: cornflowerblue;*/
float: left;
300px;
height: auto;
padding-top: 5px;
/*opacity: .95;*/
/*border-bottom: 1px dashed #000;*/
}
/*part4提示信息,messge*/
#bill06_part4 {
/*background-color:red;*/
300px;
height: 45px;
}

#bill06_part4_message {
/*background-color: antiquewhite;*/
float: left;
300px;
height: 100%;
/*opacity: .95;*/
border-bottom: 1px dashed #000;
}

#bill06_part4_message_title {
font-size: 9pt;
font-weight: bold;
}

#bill06_part4_message_content span {
font-size: 9pt;
/*background-color: cornflowerblue;*/
}
/*part5 早餐券详细信息,messge*/
#bill06_part5 {
/*background-color:red;*/
300px;
height: 200px;
}

#bill06_part5_message {
/*background-color: brown;*/
float: left;
300px;
height: 100%;
/*opacity: .95;*/
min-height: 150px;
/*border-bottom: 1px solid #000;*/
}

#bill06_part5_message_left {
165px;
height: auto;
float: left;
}

#bill06_part5_message_right {
135px;
height: auto;
float: left;
}
/*附加的内部span样式*/
.keyDes {
float: left;
/*background-color:darkcyan;*/
95px;
}
.keyDes span {
font-size: 6pt;
}

.valueDes {
float: left;
/*background-color:darkgreen;*/
205px;
}
.valueDes span {
font-size: 6pt;
}

.keyDes_All {
float: left;
/*background-color:darkcyan;*/
70px;
}
.keyDes_All span{
font-size: 6pt;
}

.valueDes_All {
float: left;
/*background-color:darkgreen;*/
80px;

}

.keyDes_All_Eng0 {
float: left;
/*background-color:darkcyan;*/
60px;
}
.keyDes_All_Eng0 {
float: left;
/*background-color:darkcyan;*/
60px;
}
.keyDes_All_Eng1 {
float: left;
/*background-color:darkcyan;*/
57px;
}
.keyDes_All_Eng {
float: left;
/*background-color:darkcyan;*/
60px;
}
.keyDes_All_Eng span {
font-size: 6pt;
}
.keyDes_All_Eng0 span {
font-size: 6pt;
}
.keyDes_All_Eng1 span {
font-size: 6pt;
}

.valueDes_All_Eng0 {
float: left;
/*background-color:darkgreen;*/
105px;
}
.valueDes_All_Eng1 {
float: left;
/*background-color:darkgreen;*/
78px;
}
.valueDes_All_Eng0 span {
font-size: 6pt;
}
.valueDes_All_Eng1 span {
font-size: 6pt;
}
.valueDes_All_Eng {
float: left;
/*background-color:darkgreen;*/
90px;
}
.valueDes_All_Eng span {
font-size: 6pt;
}
.valueDes_All_Eng0 span {
font-size: 6pt;
}

.underline {
text-decoration: underline;
}

 纯JS实现分页

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>纯JS实现分页</title>
<!-- <script type="text/javascript" src="page.javascript">
把下面的的函数放到page.js中也可以
</script> -->
<script type="text/javascript">
/**
* 分页函数
* pno--页数
* psize--每页显示记录数
* 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数
* 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能
**/
function goPage(pno,psize){
var itable = document.getElementById("idData");
var num = itable.rows.length;//表格所有行数(所有记录数)
console.log(num);
var totalPage = 0;//总页数
var pageSize = psize;//每页显示行数
//总共分几页
if(num/pageSize > parseInt(num/pageSize)){
totalPage=parseInt(num/pageSize)+1;
}else{
totalPage=parseInt(num/pageSize);
}
var currentPage = pno;//当前页数
var startRow = (currentPage - 1) * pageSize+1;//开始显示的行 31
var endRow = currentPage * pageSize;//结束显示的行 40
endRow = (endRow > num)? num : endRow; 40
console.log(endRow);
//遍历显示数据实现分页
for(var i=1;i<(num+1);i++){
var irow = itable.rows[i-1];
if(i>=startRow && i<=endRow){
irow.style.display = "block";
}else{
irow.style.display = "none";
}
}
var pageEnd = document.getElementById("pageEnd");
var tempStr = "共"+num+"条记录 分"+totalPage+"页 当前第"+currentPage+"页";
if(currentPage>1){
tempStr += "<a href="#" onClick="goPage("+(1)+","+psize+")">首页</a>";
tempStr += "<a href="#" onClick="goPage("+(currentPage-1)+","+psize+")"><上一页</a>"
}else{
tempStr += "首页";
tempStr += "<上一页";
}

if(currentPage<totalPage){
tempStr += "<a href="#" onClick="goPage("+(currentPage+1)+","+psize+")">下一页></a>";
tempStr += "<a href="#" onClick="goPage("+(totalPage)+","+psize+")">尾页</a>";
}else{
tempStr += "下一页>";
tempStr += "尾页";
}

document.getElementById("barcon").innerHTML = tempStr;
 
}
</script>
<style type="text/css">
#idData {color: red;border: solid;text-align: center;}
a{text-decoration: none;}
</style>
</head>
<body onLoad="goPage(1,10);">
<table id="idData" width="70%">
<tr><td>张锋1</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋2</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋3</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋4</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋5</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋6</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋7</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋8</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋9</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋10</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋11</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋12</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋13</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋14</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋15</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋16</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋17</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋18</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋19</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋20</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋21</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋22</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋23</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋24</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋18</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋26</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋27</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋28</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋29</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋30</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋31</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋32</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋33</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋34</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋35</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋36</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋37</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋38</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋39</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
<tr><td>张锋40</td><td>18</td><td>男</td><td>上海市长宁</td></tr>
</table>
<table width="60%" align="right">
<tr><td><div id="barcon" name="barcon"></div></td></tr>
</table>
</body>
</html>

 

 

 

原文地址:https://www.cnblogs.com/newcapecjmc/p/11088438.html