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
二、利用IE自身打印
这种方式比较简单,也常用的打印方式,只需要将报表页面设计好,用户通过IE菜单中的打印功能完成打印。优点是简单,容易实现,缺点是不灵活,不能控制分页,不能控制好页眉和页脚。
三、将报表导出成Word,Excel或PDF形式打印
这种方式需要将页面导出成Office文档或pdf,最低的要求是客户端已经安装用以打开Word、Excel或Pdf文档的软件。这种方式可以通过水晶报表组件或其他一些第三方控件非常容易地实现。导出成Pdf形式后打印质量和效果都很好,导出成Word或Excel后用户可以自定义打印的内容和格式。
总之,现有的打印方案各有所长,在开发过程中应根据用户的需求作选择,利用IE打印简单,容易实现,在用户需求简单或打印内容较少的情况下采用此方案比较适宜。利用自定义控件打印可以实现完全自定义,但需要较高的技术要求和开发周期。利用导出的方式则可以满足用户需要一点自定义或打印内容有多页的需求。
-------------------------------------------------------------
1、控制"纵打"、横打”和“页面的边距。
(1)<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"&nbs