打印是一個頭痛的問題.
AxtiveX控件收費,用戶使用需降低安全級別.
最后還是打算用webBrowser打印.
1.js
/*
*設置頁眉和頁腳
*/
function setPageHF(isSet)
{
try
{
var regWriteShell = new ActiveXObject("WScript.Shell");
var regKey="HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
if(isSet)
{
//設置
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);
//相關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);
}

/*
*打印預覽
*/
function printView()
{
document.all.WebBrowser.ExecWB(7,1);
}

/*
*打印設置
*/
function printSet()
{
document.all.WebBrowser.ExecWB(8,1);
}
2.table html
1).第個打印頁有表頭
2).每頁表格線連續
StringBuffer printPageStr = new StringBuffer();
// 當前頁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;
//取出總列數
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="打印預覽
" 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>
AxtiveX控件收費,用戶使用需降低安全級別.
最后還是打算用webBrowser打印.
1.js









































































2.table html
1).第個打印頁有表頭
2).每頁表格線連續

































3.jsp





















































































































