话不多说,先看代码,一起学习与进步才是最大的财富。其实实现的技术难点不高,主要是画打印的表格花了我很多时间,如果用得上这个打印的表格模板大家也可以借鉴借鉴,或者有更好的可以分享给我。
1、打印的jsp:
<script type="text/javascript">
$(document).ready(function(){
var items = $("#items").val();
var tdHeight = $("#td").height();
var totalHeight = $("#trHeight").height();
if(items>1){
var endHeight = totalHeight-(tdHeight*(items-1));
$("#trHeight").css('height',endHeight);
}
setTimeout('execWB()',400);
});
function execWB(){
//打印设置和打印操作
document.all.WebBrowser.ExecWB(8,1);
document.all.WebBrowser.ExecWB(6,1);
}
</script>
<style type="text/css">
.printcss_two{
font-size: 20px;
font-family: '宋体';
font-weight: bold;
}
.printTable{
border: 1px solid #000;
width:805px;
height:350px;
}
.printTable1{
border: 1px solid #000;;
cellpadding:0;
cellspacing:0;
width:805px;
}
.printTable tr td{
border: 1px solid #000;
height:33px;
font-size: 13px;
font-family: '宋体';
}
.printTable1 tr td{
border: 1px solid #000;
font-size: 13px;
font-family: '宋体';
}
.tdcss1{
font-size: 14px;
font-family: '宋体';
font-weight: bold;
height:35px;
}
.tdcss2{
font-size: 13px;
font-family: '宋体';
height:32px;
}
.printcss_one{
font-size: 18px;
font-family: '宋体';
font-weight: bold;
}
</style>
<style media=print>
.Noprint{
display:none;
}
.PageNext{
page-break-after:always;
}
</style>
</head>
<body class="PageNext">
<input type="hidden" id="items" value="${items}"/>
<object id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT></object>
<div class="myPrintArea"align="center">
<div class="printcss_one">XXXXXXXX表/br><font>打印实现</font></div>
<table class="printTable">
<tr>
<td align="left" width="155px" id="td">编号</td>
<td align="left" width="155px">日期</td>
<td align="left" width="212px">主管(${user.customsCode})</td>
<td align="left" width="273px">单位(${user.tradeCo})</td>
</tr>
<tr>
<td align="left" width="155px">${user.cargoNo}</td>
<td align="left" width="155px"><fmt:formatDate value="${user.sendDate}" pattern="yyyy-MM-dd"/></td>
<td align="left" width="212px">${user.customsName}</td>
<td align="left" width="273px">${user.tradeName}</td>
</tr>
<tr>
<td align="left" width="155px">类型</td>
<td align="left" width="155px">车号</td>
<td align="left" width="212px">卡号</td>
<td align="left" width="273px">关号</td>
</tr>
<tr>
<td align="left" width="155px">${user.copeName}</td>
<td align="left" width="155px">${user.ptsNo}</td>
<td align="left" width="212px">${user.iarNo}</td>
<td align="left" width="273px">${user.slNo}</td>
</tr>
<tr>
<td align="left" width="155px">姓名</td>
<td align="left" width="155px">帐号</td>
<td align="left" width="212px">起地</td>
<td align="left" width="273px">抵地</td>
</tr>
<tr>
<td align="left" width="155px">${user.tame}</td>
<td align="left" width="155px">${user.flyageNo}</td>
<td align="left" width="212px">${user.inCode}</td>
<td align="left" width="273px">${user.ivlCode}</td>
</tr>
<tr>
<td align="left" width="155px">号1</td>
<td align="left" width="155px">号2</td>
<td align="left" width="212px">车重(KG)</td>
<td align="left" width="273px">拖重(KG)</td>
</tr>
<tr>
<td align="left" width="155px">${user.container1}</td>
<td align="left" width="155px">${user.container2}</td>
<td align="left" width="212px">${user.carWeight}</td>
<td align="left" width="273px">${user.terWeight}</td>
</tr>
<tr>
<td align="left" width="155px">重量(KG)</td>
<td align="left" width="155px">${user.container}</td>
<td align="left" width="212px"></td>
<td align="left" width="273px"></td>
</tr>
<table class="printTable1">
<tr>
<td align="left" style="border-right:1px solid white" class="tdcss1">序号</td>
<td align="left" style="border-left:1px solid white;border-right:1px solid white" class="tdcss1">证号 </td>
<td align="center" style="border-left:1px solid white;border-right:1px solid white" class="tdcss1"></td>
<td align="center" style="border-left:1px solid white;" class="tdcss1"></td>
</tr>
<c:forEach items="${enoList}" var="entryNos" varStatus="entryNo">
<tr>
<td align="left" style="border-right:1px solid white" class="tdcss2">${entryNo.count}</td>
<td align="left" style="border-left:1px solid white;border-right:1px solid white" class="tdcss2">${entryNos.GODOWO}</td>
<td align="center" style="border-left:1px solid white;border-right:1px solid white" class="tdcss2"></td>
<td align="center" style="border-left:1px solid white;"class="tdcss2"></td>
</tr>
</c:forEach>
</table>
<table class="printTable">
<tr rowspan ="6" height="610px" id="trHeight">
<td ></td>
</tr>
</table>
</table>
</div>
</body>
function execWB(){
//打印设置和打印操作
document.all.WebBrowser.ExecWB(8,1);
document.all.WebBrowser.ExecWB(6,1);
}
此处调用打印控件来实现打印功能,setTimeout('execWB()',400);来实现调用打印方法的时间控制。
<body class="PageNext">
通过PageNext来实现打印分页功能,当循环到一定数量的数据时就会进行分页。
其他需要注意的是:弹出的打印设置,需要将其参数全部设为"空",否则会将页码和标题等全部打印上去。
${entryNo.count}:得到forEach循环的次数,有时候很实用。
此打印主要针对简单的JSP实现,当然,有很多更强大的打印软件和插件也是不错的,有兴趣大家也可以去学习学习,交流交流。