经典ASP.NET打印技术

对于B/S架构的项目中,Web打印最是让程序员头痛的技术,在这次项目中运用了第三方控件ScriptX解决了此技术包括各种汇总表,详细清单等等,但最大弊端就是打印的格式是死的,你要打印出怎样的格式必须自己来做,还有就是打印分页,它是按你设置的纸张大小来分的,所以必须人为控制,ScriptX控件所需文件ScriptX.cab。(ScriptX下载地址http://www.meadroid.com/scriptx/freedep.asp )
打印功能使用:
 
⑴ 用户在客户端单击“打印”按钮,第一次使用打印会弹出如下对话框
 
⑵ 单击“是”按钮,此时会把控件ScriptX下载到本机
 
⑶ 在打印窗口中有大标题、打印条件、打印列表,单击“打印”按钮进入打印浏览界面。
 
⑷ 单击“Print”按钮,听打印机声音响起。
二、    一个简单的ScriptX控件使用实例
1.界面文件  WebExample.aspx  (其中kg.css是界面样式在这里就不介绍了)

以下为引用的内容:
〈%@ Page language="c#" Codebehind="WebExample.aspx.cs" AutoEventWireup="false" Inherits="WebPrint.WebExample" %> 
〈!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
〈HTML> 
       〈HEAD> 
              〈title>一个简单的ScriptX打印〈/title> 
              〈meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> 
              〈meta name="CODE_LANGUAGE" Content="C#"> 
              〈meta name="vs_defaultClientScript" content="JavaScript"> 
              〈meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> 
              〈LINK href="kg.css" type="text/css" rel="stylesheet"> 
       〈/HEAD> 
       〈body MS_POSITIONING="GridLayout"> 
              〈form id="WebExample" method="post" runat="server"> 
                     〈TABLE width="100%" height="100%"> 
                            〈tr> 
                                   〈td height="100"> 
                                   〈/td> 
                            〈/tr> 
                            〈tr> 
                                   〈td style="HEIGHT: 14px" align="center"> 
                                          〈div id="divTableResult" name="divTableResult"> 
                                                 〈asp:Label id="Label1" runat="server" Width="232px" Height="32px" Font-Size="Large">欢迎使用ScriptX打印〈/asp:Label> 
                                          〈/div> 
                                   〈/td> 
                            〈/tr> 
                            〈tr> 
                                   〈td align="center" valign="top"> 
                                          〈div id="divChartResult" name="divChartResult"> 
                                                 〈asp:Image id="Image1" runat="server" ImageUrl="win2000.gif">〈/asp:Image> 
                                          〈/div> 
                                   〈/td> 
                            〈/tr> 
                            〈tr> 
                                   〈td align="center" valign="top"> 
                                          〈input id="btnPrint" style="WIDTH: 32px; HEIGHT: 19px" οnclick="printResult();" type="button" 
                                                 size="1" value="打印" name="btnPrint"> 
                                   〈/td> 
                            〈/tr> 
                     〈/TABLE> 
              〈/form> 
              〈script language="javascript"> 
              function printResult() 
              { 
                     //针对不同模块,设置打印参数 
                     var title = 'ScriptX打印';//报表名称 
                     var orien = 'true';//打印页面方向,true:纵向打印/false横向打印 
                     //参数设置结束 
                     var strURL; 
                     title = escape(title); 
                     //condition = escape(condition); 
                     strURL = 'printContainer2.aspx?title='+title+'&orien='+orien; 
                     window.open(strURL,'printResult','height=600, width=800, top=0, left=50,toolbar=no , menubar=no, scrollbars=yes, resizable=no, location=no, status=no');  
              } 
              〈/script> 
       〈/body> 
〈/HTML>

说明:

 

以下为引用的内容:
⑴ 〈div id="divTableResult" name="divTableResult">和〈div id="divChartResult" name="divChartResult"> 是在printContainer2.aspx文件中定义的传值标签,因此必须要有。 
⑵ printResult()方法用来声明传值内容,具体在方法中已说明

 

2.打印界面   printContainer2.aspx (其中print.css是打印样式就不介绍了) 
〈%@ Page language="c#" Codebehind="printContainer2.aspx.cs" AutoEventWireup="false" Inherits="WebPrint.printContainer2" %> 
〈!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
〈% 
string title = "查询打印"; 
‘用于title获取标题 
if(Request.QueryString["title"].ToString().Trim()!=""){ 
       title = Request.QueryString["title"].ToString().Trim(); 

‘用于orientation获取打印页面方向,true:纵向打印/false横向打印 
string orientation = "true"; 
if(Request.QueryString["orien"].ToString().Trim()!=""){ 
       orientation =  Request.QueryString["orien"].ToString().Trim(); 

%>

以下为引用的内容:
〈html> 
       〈head> 
              〈title>ScriptX 打印〈/title> 
              〈meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> 
              〈meta name="CODE_LANGUAGE" Content="C#"> 
              〈meta name="vs_defaultClientScript" content="JavaScript"> 
              〈meta http-equiv="content-type" content="text/html; charset=gb2312"> 
              〈meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> 
              〈link href="kg.css" rel="stylesheet" type="text/css"> 
              〈link href="print.css" rel="stylesheet" type="text/css"  media="print" > 
〈script  FOR=document event="onclick"> 
if(event.srcElement.tagName=='A'){ 
              //alert('a click!'); 
              event.cancelBubble = true; 
}

 

〈/script> 
               
〈style type="text/css"> 
a:link {text-decoration:none} 
a:visited {text-decoration:none} 
a:active {text-decoration:none} 
a:hover {text-decoration:none}

A { COLOR: #000000;TEXT-DECORATION: none; FONT-SIZE: 8pt;FONT-FAMILY: "";}

〈/style> 
       〈/head> 
        
       〈body MS_POSITIONING="GridLayout" > 
〈!--这里调用控件ScriptX.cab--> 
〈object id="factory" viewastext  style="display:none" 
  classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" 
  codebase="ScriptX.cab#Version=6,1,431,2"> 
〈/object> 
〈SCRIPT defer> 
//用于设置打印参数 
function printBase() { 
factory.printing.footer = "&b ScriptX 打印 &b"       //页眉 
factory.printing.footer = ""                                 //页脚 
factory.printing.portrait = 〈%=orientation%>             //true为纵向打印,flase为横向打印 
factory.printing.leftMargin = 1.5                               //左页边距 
factory.printing.topMargin = 0.5                               //上页边距 
factory.printing.rightMargin = 0.5                             //右页边距 
factory.printing.bottomMargin = 1.0                          //下页边距 

〈/SCRIPT> 
〈table width="100%" border="0" cellspacing="0" cellpadding="0" align="center" bordercolor="#FFFFFF"> 
  〈tr bordercolor="#FFFFFF"> 
    〈td > 
       〈table width="70%" border="0" cellspacing="0" cellpadding="2" align="center"> 
         〈tr> 
           〈td align="center">〈font size="5" face="宋体">〈b>〈div  name="divTitle" id="divTitle">〈/div>〈/b>〈/font>〈/td> 
         〈/tr> 
         〈tr> 
           〈td align="center"> 
             〈div id="divReport" name="divReport"> 
             〈input type="button" name="cmdPRINT" id="cmdPRINT" οnclick="printReport()" value="打印"> 
                    
             〈input type="button" οnclick="window.close();"  value="关闭"> 
             〈/div> 
           〈/td> 
         〈/tr> 
       〈/table> 
   〈/td> 
  〈/tr> 
〈/table> 
〈table width="100%" border="0" cellspacing="0" cellpadding="2" align="center"> 
         〈tr>〈td align="center"> 
〈!--  用于显示divTableContainer标签的值 --> 
〈div id="divTableContainer"  name="divTableContainer">〈/div> 
              〈/td>〈/tr> 
               〈tr>〈td align="center"> 
〈!--  用于显示divChartContainer标签的值 --> 
〈div id="divChartContainer"  name="divChartContainer">〈/div> 
              〈/td>〈/tr> 
〈/table> 
〈/body> 
〈script language="javascript"> 
//使界面最大化 
maxWin();

var needcon=''; 
document.all.divTitle.innerText = unescape('〈%=title%>');

//用于把父窗体的divTableResult和divChartResult标签的值分别转入divTableContainer 和divChartContainer标签中 
var tableContent = window.opener.document.all.divTableResult.innerHTML; 
tableContent = replaceAll(tableContent,"〈A ","〈span "); 
tableContent = replaceAll(tableContent,"〈/A> ","〈/span> "); 
tableContent = replaceAll(tableContent,"〈a ","〈span "); 
tableContent = replaceAll(tableContent,"〈/a> ","〈/span> "); 
tableContent = replaceAll(tableContent,"〈input ","〈font "); 
tableContent = replaceAll(tableContent,"〈INPUT ","〈font "); 
document.all.divTableContainer.innerHTML = tableContent; 
document.all.divChartContainer.innerHTML = window.opener.document.all.divChartResult.innerHTML;

//用于调用设置打印参数的方法和显示预览界面 
function printReport(){ 
       printBase(); 
       //window.print(); 
       factory.printing.Preview(); 
}  
function replaceAll( str, from, to ) { 
    var idx = str.indexOf( from ); 
    while ( idx > -1 ) { 
        str = str.replace( from, to );  
        idx = str.indexOf( from ); 
    } 
    return str; 

function maxWin() 

     var aw = screen.availWidth; 
     var ah = screen.availHeight; 
     window.moveTo(0, 0); 
     window.resizeTo(aw, ah); 

〈/script> 
〈/html>

转自:http://www.chinaz.com/program/2008/1125/46660_2.shtml

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值