打印是一個頭痛的問題.
AxtiveX控件收費(fèi),用戶使用需降低安全級別.
最后還是打算用webBrowser打印.
1.js

/**//*
*設(shè)置頁眉和頁腳
*/
function setPageHF(isSet)


{
try

{
var regWriteShell = new ActiveXObject("WScript.Shell");
var regKey="HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
if(isSet)

{
//設(shè)置
regWriteShell.RegWrite(regKey+"header","");
regWriteShell.RegWrite(regKey+"footer","&b科印傳媒 第&p頁 共&P頁");
//regWriteShell.RegWrite(regKey+"footer","");
}
else

{
//清除
regWriteShell.RegWrite(regKey+"header","");
regWriteShell.RegWrite(regKey+"footer","");
}

}catch(e)
{}
}


/**//*
*要完成打印的必須信息
*/
function writeInfo()


{
//對象信息
var objInfo = "<object id='WebBrowser' width=0 height=0 classid='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>";
document.write(objInfo);
//相關(guān)CSS
var cssInfo = "<style media='print'>";
cssInfo += ".noPrint{display:none;background-color:#939392;}";
cssInfo += ".nextPage{page-break-after: always;}";
cssInfo += "</style>";
//document.write(cssInfo);
}


/**//*
*打印
*/
function print()


{
document.all.WebBrowser.Execwb(6,1);
}


/**//*
*直接打印
*/
function printDirect ()


{
document.all.WebBrowser.ExecWB(6,6);
}


/**//*
*打印預(yù)覽
*/
function printView()


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


/**//*
*打印設(shè)置
*/
function printSet()


{
document.all.WebBrowser.ExecWB(8,1);
}
2.table html
1).第個打印頁有表頭
2).每頁表格線連續(xù)
StringBuffer printPageStr = new StringBuffer();
// 當(dāng)前頁DIV
printPageStr.append("<div id=\"page").append(currentPage).append("\" class='nextPage'>");
printPageStr.append("<table id=\"table_1");
printPageStr.append("\" width=\"100%\" class=\"tabp\" cellpadding='2' cellspacing='0'>");
// 表頭
printPageStr.append("<tr>");
printPageStr.append("<thead style='display:table-header-group;font-weight:bold;'>");
for (Object headerName : baseInfoHeadLst)

{
printPageStr.append("<th nowrap=\"nowrap\" class='thp' style='border-top:1px solid #000000;'>");
printPageStr.append(headerName == null ? "" : headerName);
printPageStr.append("</th>");
}
printPageStr.append("</thead></tr>");
// 表體
for(List innerLst : dataLst)

{
printPageStr.append("<tr>");
for(Object data : innerLst)

{
printPageStr.append("<td nowrap=\"nowrap\" class='tdp'>");
printPageStr.append(data == null ? "" : data).append(" ");
printPageStr.append("</td>");
}
printPageStr.append("</tr>");
}
printPageStr.append("</table>");
printPageStr.append("<br/>");
printPageStr.append("</div>");
return printPageStr.toString();
3.jsp
<!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>
<title>打印</title>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"/>
<meta http-equiv="description" content="This is my page"/>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/print2/print.js"></script>

<style type="text/css" media='print'>

.noprint {
}{display: none;}
</style>

<style type="text/css">
.tdp

{
}{
border-bottom: 1px solid #000000;
border-left: 1px solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.thp

{
}{
border-bottom: 1px solid #000000;
border-left: 1px solid #000000;
border-right: 0 solid #ffffff;
border-top: 1px solid #ffffff;
}
.tabp

{
}{
border:1px solid #000000;
border-top:1px solid #000000;
border-right:2px solid #000000;
}
</style>

<script type="text/javascript">
writeInfo();
setPageHF(true);

/**//** 切換行是否打印 */
function switchPrintRW(tableId)

{

$("#"+tableId).find("tr").dblclick(function(i)
{
if($(this).prevAll().length>=0)

{
//如果存在則移作此css,如果不存在則添加此css類

$(this).find("td").each(function(j)
{
if($(this).css("background-color")!="#939392")

{
$(this).addClass("noprint");

$(this).css(
{"background-color":"#939392"});
}
else

{
$(this).removeClass("noprint");

$(this).css(
{"background-color":"white"});
}
});
}
});
}

/**//** 切換列是否打印 */
function switchPrintTD(tableId)

{

$("#"+tableId).find("th").dblclick(function()
{
//取出第幾列
var tdCount = $(this).prevAll().length;
//取出總列數(shù)
var rowTdTotalCount = $("#"+tableId).find("th").length;
//alert(tdCount + "" + "/" + ""+ rowTdTotalCount);
//改變列的樣式
$(this).toggleClass("noprint");
if($(this).attr("class").indexOf("noprint")>=0)

{

$(this).css(
{"background-color":"#939392"});
}
else

{

$(this).css(
{"background-color":"white"});
}
//改變列的樣式

$("#"+tableId).find('td').each(function(i)
{
if(i%rowTdTotalCount == tdCount)

{
//如果存在則移作此css,如果不存在則添加此css類
$(this).toggleClass("noprint");
if($(this).attr("class").indexOf("noprint")>=0)

{

$(this).css(
{"background-color":"#939392"});
}
else

{

$(this).css(
{"background-color":"white"});
}
}
});
});
}


$(document).ready(function()
{
// 添加列事件
//;switchPrintRW("table_1");
switchPrintTD("table_1");
});
</script>
</head>
<body oncontextmenu="self.event.returnValue=false" onselectstart="return false">
<input type="button" value="打印預(yù)覽
" class="noprint" onClick="javascript:printView();" style="background:#ccc url('../images/button_bg.gif') no-repeat;border:0px;color:#333;width:100px;height:27px;font-size:13px;font-weight:normal;text-align:center;vertical-align:middle;"/><input type="button" value="打印
" class="noprint" onClick="javascript:printSet();" style="background:#ccc url('../images/button_bg.gif') no-repeat;border:0px;color:#333;width:100px;height:27px;font-size:13px;font-weight:normal;text-align:center;vertical-align:middle;"/><input type="button" value="打印" class="noprint" onClick="javascript:print();" style="background:#ccc url('../images/button_bg.gif') no-repeat;border:0px;color:#333;width:100px;height:27px;font-size:13px;font-weight:normal;text-align:center;vertical-align:middle;"/><%=printPagesStr%>
</body>
</html>