日期:2011-11-19  浏览次数:21047 次

WEB打印一直困扰着大家,小弟最近做一项目,稍有心得,特来跟大家交流交流。

我在那个项目中是利用ScriptX.cab这个控件来解决问题的,包括各种汇总表,详细清单等等,不过最大弊端就是打印的格式是死的,你要打印出怎样的格式必须自己来做,还有就是打印分页,它是按你设置的纸张大小来分的,所以必须人为控制,我已经搞定了。

ScriptX.cab大家可以到网上去DOWN一个。

好了,废话不多说了,代码才是大家最需要看到的。

包括三个文件,一个是框架页,一个是工具栏页,还一个就是打印的内容页了。

框架页:

<html>
<head>
<title>打印 / 预览 / 库存汇总表</title>
<link type="text/css" rel="stylesheet" href="style.css">
<script language="javascript" src="main.js"></script>
<script language="javascript">maxwin();</script>
</head>
<frameset rows="42,*" style="border:none">
<frame src="toolbar.asp" name="toolbar" target="mainbar" frameborder="0" scrolling="no" noresize>
<frame src="kc.asp" name="mainbar" target="mainbar" frameborder="0" scrolling="auto" noresize>
</frameset>
</html>

工具栏页:([预览],[设置]和[打印]等按钮,代码里边的图片大家自己去做一个好了)

<body bgcolor="#D4D0C8" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" onselectstart="return false" oncontextmenu="return false">
    <table width="100%" height="41" cellpadding="0" cellspacing="0" border="0" background="../images/bg_toolbar.gif">
     <tr>
      <td width="10"><img src="http://www.163design.net/a/images/bar_toolbar.gif"></td>
      <td width="85" align="center"><img src="http://www.163design.net/a/images/ico_print.gif" ></td>
      <td width="2"><img src="http://www.163design.net/a/images/line_toolbar.gif"></td>
      <td width="85" align="center"><img src="http://www.163design.net/a/images/ico_setup.gif" ></td>
      <td width="2"><img src="http://www.163design.net/a/images/line_toolbar.gif"></td>
      <td width="85" align="center"><img src="http://www.163design.net/a/images/ico_view.gif" ></td>
      <td width="2"><img src="http://www.163design.net/a/images/line_toolbar.gif"></td>
      <td> </td>
     </tr>
    </table>
</body>

内容页:(代码里边的数据查询请大家换成自己的数据查询)

<style>
td{font-size:14px;line-height:180%}
.ybk{border-right:1px #000000 solid;}
.sbk{border-top:1px #000000 solid;}
</style>
<!--这里调用控件ScriptX.cab-->
<object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="ScriptX.cab#Version=5,60,0,360"></object>
<script defer>
function window.onload() {
  factory.printing.header = ""         //页眉
  factory.printing.footer = ""        //页脚
  factory.printing.portrait = false    //true为纵向打印,flase为横向打印
  factory.printing.leftMargin = 15.0   //左页边距
  factory.printing.topMargin = 5.0     //上页边距
  factory.printing.rightMargin = 0.75  //右页边距
  factory.printing.bottomMargin = 1.5  //下页边距
  }
</script>
<body oncontextmenu="return false">

        <!--#include file="conn.asp"--

>
        <%
           sql="exec showkc_print"
           Set rs=Server.CreateObject("Adodb.Recordset")
           rs.open sql,conn,3,2
       &