三、 本项目采用的打印方案
服务器端程序方式、打印预览接口调用,下面为例,主要参考项目中的:pageErrorPrint.aspx.vb文件
主调用页
function PrintPage(iPageIndex,strQuery)
{
var strURL; 
strURL = "PageErrorPrint.aspx?PageIndex=" + iPageIndex + "&QueryString=" + strQuery; 
winPrint=window.open(strURL,"","left=2000,top=2000,fullscreen=3"); 
}
打印页HTML源中的预览控制
<SCRIPT language="javascript">
document.write("<object ID='WebBrowser' WIDTH=0 HEIGHT=0 
CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>"); 
WebBrowser.ExecWB(7,1);
window.opener=null;
window.close();
</SCRIPT>
程序头
'首先声明表格容器
Protected WithEvents phContainer As System.Web.UI.WebControls.PlaceHolder
'每个表格中的记录数量
Private Const ItemPerTable As Integer = 20
关键的实现部分
'创建一个符合打印要求的表格
tabPagePrint = NewPrintTable()
'将表头添加到此表格中
Call AddTableTitle(tabPagePrint)
'初始化记录器
i = 0
iItemIndex = iStartPoint
For Each clsItem In clsAllData.ErrorCollection
    If i > 0 And i Mod ItemPerTable = 0 Then
        '添加表格控件到页面中
        phContainer.Controls.Add(tabPagePrint)
        '在页面中添加一个换行符
        Call AddPageBreak()
        '创建新一轮的表格
        tabPagePrint = NewPrintTable()
        Call AddTableTitle(tabPagePrint)
    End If
    '将记录添加到表格中
    Call AddItemToTable(iItemIndex, tabPagePrint, clsItem)
    iItemIndex = iItemIndex + 1
    i = i + 1
Next
'添加表格控件到页面中
phContainer.Controls.Add(tabPagePrint)
支持函数
'功能:添加页的换行符
Private Sub AddPageBreak()
    Dim ltBreak As LiteralControl
    ltBreak = New LiteralControl("<p style='page-break-before:always'>")
    phContainer.Controls.Add(ltBreak)
End Sub
'功能:创建一个符合打印要求的表格
Private Function NewPrintTable() As Table
    Dim tabSrc As New Table()
    tabSrc.Width = Unit.Percentage(100)
    tabSrc.Attributes("border") = "1"
    tabSrc.CellPadding = 4
    tabSrc.CellSpacing = 0
    tabSrc.BorderWidth = Unit.Pixel(2)
    tabSrc.BorderColor = Color.Black
    tabSrc.Style.Add("FONT-SIZE", "12px")
    NewPrintTable = tabSrc
End Function