to athossmth(athos) : 刚才试了一下老兄的方法,在每页表头的地方放一条横线,可以勉强解决第二页无边框的问题,虽然不是很完美,不过应该可以交差了,谢谢!···················· to ywcyj(江南) : 老兄给的代码非常详细,先谢谢了! 不过你好像没没明白我的问题出在什么地方,是这样的,我的表格中有一个<TD></TD>单元里的内容长度是不定的,正常情况下,A4纸一页打印没问题,不过有时内容的长度过长,那么打印时A4一页就放不下了,就会自动分成两页打印,而表格的下边框就被冲破,打印出来不好看,当然,在每页表头的地方放一条横线,可以勉强解决无边框的问题,但是是否还有更好的方法呢?
利用CSS控制打印分页
http://blog.csdn.net/net_lover/archive/2004/07/06/35228.aspx
学习...
我给你贴个打印示例,自己修改<!--语言无关 保存成 .HTML 看看-->
<html>
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>看看</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript" >
var hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"
//设置网页打印的页眉页脚为空
function pagesetup_null()
{
try{
var RegWsh = new ActiveXObject("WScript.Shell")
hkey_key="header"
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")
hkey_key="footer"
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")
}catch(e){}
}function DtPrint() {
if (window.print) {
var p_1 = document.all.p_1.innerHTML;
var p_2 = document.all.p_2.innerHTML;
//**************
//这里根据你要打印的哪些内容,从原显示页面中用
//<div id=P_1>p_1....</div><div id=P_2>p_2...</div>等标示,要打印多少项目就用多少下
//提示一下,自己体会:),此处我只写出两个出来:D
//**************
var css = '<style type="text/css">' +
'p { line-height: 120%}' +
'.ftitle { line-height: 120%; font-size: 18px; color: #000000}' +
'td { font-size: 10px; color: #000000}' +
'</style>' ;
//**************
//这里是定义打印用的CSS,可以根据你自己的设定去写适合你的格式哦
//本文只定义三个,p,.ftitle,td,其余自己写。越美观越好。
//**************
var body ='<table width="640" border="0" cellspacing="0" cellpadding="5">' +
' <tr> ' +
' <td class="fbody"> ' +
' <div align="center" class=ftitle>' + p_title + '</div>' + p_2 +
' </td>' +
' </tr>' +
'</table>';
//**************
//body这才是你重新设置的打印格式,根据你的打印要求,重新把原显示网页的DIV内容重新
//组合,可以根据你原来的表格内容,去掉不要打印的东东,只调用你要打印的内容
//另外:根据经验,表格大小为640左右正好是适合A4打印幅面!哈!
//**************
document.body.innerHTML = '<center>' + css + body + '</center>';
//**************
//然后在这里把document.body重新设一下,这就是打印文档!(有加CSS格式了)
//**************
window.print();
//**************
//一定要调用window.print()哦,否则,打印无效……说了那么多就成废话了:'(
//**************
}
}</script>
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style><style>
.tdp
{
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.tabp
{
border-color: #000000 #000000 #000000 #000000;
border-style: solid;
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 1px;
border-left-width: 1px;
}
.NOPRINT {
font-family: "宋体";
font-size: 9pt;
}table.MsoTableGrid
{border:1.0pt solid windowtext;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.0pt;
font-family:"Times New Roman";
}
</style></head><body >
<center class="Noprint" >
<p>
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=页面设置 onclick="document.all.WebBrowser.ExecWB(8,1);">
<input type=button value=打印预览 onclick="document.all.WebBrowser.ExecWB(7,1)">
<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(4,1)>
<br/>
</p>
<hr align="center" width="90%" size="1" noshade>
</center>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td colspan="3" class="tdp">第1页</td>
</tr>
<tr>
<td width="29%" class="tdp"> </td>
<td width="28%" class="tdp"> </td>
<td width="43%" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>这样的报表</p>
<p>对一般的要求就够了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分页-->
<div class="PageNext"></div>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td class="tdp">第2页</td>
</tr>
<tr>
<td class="tdp">看到分页了吧</td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>这样的报表</p>
<p>对一般的要求就够了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分页-->
<div class="PageNext"></div>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td class="tdp">第3页</td>
</tr>
<tr>
<td class="tdp">是不是很好用?</td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>这样的报表</p>
<p>对一般的要求就够了。</p></td>
<td width="50%" class="tdp"> 123</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
刚才试了一下老兄的方法,在每页表头的地方放一条横线,可以勉强解决第二页无边框的问题,虽然不是很完美,不过应该可以交差了,谢谢!····················
to ywcyj(江南) :
老兄给的代码非常详细,先谢谢了!
不过你好像没没明白我的问题出在什么地方,是这样的,我的表格中有一个<TD></TD>单元里的内容长度是不定的,正常情况下,A4纸一页打印没问题,不过有时内容的长度过长,那么打印时A4一页就放不下了,就会自动分成两页打印,而表格的下边框就被冲破,打印出来不好看,当然,在每页表头的地方放一条横线,可以勉强解决无边框的问题,但是是否还有更好的方法呢?