jsp调用IE打印控件实现打印功能,并且实现分页功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27361727/article/details/73478606

话不多说,先看代码,一起学习与进步才是最大的财富。其实实现的技术难点不高,主要是画打印的表格花了我很多时间,如果用得上这个打印的表格模板大家也可以借鉴借鉴,或者有更好的可以分享给我。
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实现,当然,有很多更强大的打印软件和插件也是不错的,有兴趣大家也可以去学习学习,交流交流。

猜你喜欢

转载自blog.csdn.net/qq_27361727/article/details/73478606