ASP.NET设置ie打印两法

在ASP.Net中最为头痛的可能就是打印设置了。
为了这个问题,我都要熬白头了。网上也找了很多代码,但是总是会存在一些问题。根据我自己的实际试验发现不能用,为找不到对象之类的错误提示。

这里给出两种实际可用的方法:

一。通过注册表修改IE打印设置
<HTML>
 <HEAD>
  <TITLE>New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="YC">
  <script language="VBScript">
dim hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="/Software/Microsoft/Internet Explorer/PageSetup" //IE打印设置的注册表地址

function pagesetup_null()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="/header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" //页眉
hkey_key="/footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" //页脚
hkey_key="/margin_left"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1" //键值设定--左边边界
hkey_key="/margin_top"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1"
hkey_key="/margin_right"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1"
hkey_key="/margin_bottom"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1"
end function
'//

function pagesetup_default()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="/header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b页,&p/&P" //页数-
hkey_key="/footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d" //网址,日期等信息
end function
  </script>
 </HEAD>
 <BODY>
  <table width="100%" border=2 cellspacing=1 align=center cellpadding=1 id=tb1>
   <tr>
    <td>
     <br>
     <br>  
     <br>
     <p align="center">
      <input type="button" value="Clean" οnclick="pagesetup_null()"> <input type="button" value="Reset" οnclick="pagesetup_default()"><br>
     </p>
    </td>
   </tr>
  </table>
 </BODY>
</HTML> <script language=VBScript> dim hkey_root,hkey_path,hkey_key hkey_root="HKEY_CURRENT_USER" hkey_path="/Software/Microsoft/Internet Explorer/PageSetup" function pagesetup_null() on error resume next Set RegWsh = CreateObject("WScript.Shell") hkey_key="/header" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" hkey_key="/footer" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" hkey_key="/margin_left" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1" hkey_key="/margin_top" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1" hkey_key="/margin_right" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1" hkey_key="/margin_bottom" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"1" window.alert(hkey_root+hkey_path) end function '// function pagesetup_default() on error resume next Set RegWsh = CreateObject("WScript.Shell") hkey_key="/header" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&bページ,&p/&P" hkey_key="/footer" RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d" end function </script>

除了以上键值以外还有
duplex
orientation
paper_size
paper_source
printer


注意:上面对页边距的设置为:1,实际设置值为25.4。

昨天发现这个方法有一个致命的缺点。那就是这个只能在安装有.Net框架的机子上有效。因为它所调用的
WScript.Shell.Net框架的...我还以为解决了这个烦人的打印控制了,昨天在客户端一运行简直让我伤心死。呵呵。。。。

难道还要让对什么是.net都不知道的用户去安装.net的框架么。不现实。
所以只能又回到javascript中来了。

二。javascript
今天发现原来以前有时有效有时无效的原因是出在,<input name="idPrint" type="button" value="打印" οnclick="doprint()">不能放在页面的<form runat="server" id="Form1">之内,客户端的javascript放在runat server怎么行呢。认识到这个问题就好解决了。以下给出原码:

<script language="Javascript"><!--
function doprint() {
  //保留客户打印机设置
  var h = factory.printing.header;
  var f = factory.printing.footer;
  var t = factory.printing.topMargin;
  var b = factory.printing.bottomMargin;
  var l = factory.printing.leftMargin;
  var r = factory.printing.rightMargin;
 
  document.all("printbtn").style.visibility = 'hidden';//打印时隐藏打印按钮
  //设置页眉页脚上下左右边距
  factory.printing.header = "页眉+_+ohiolee的打印世界";
  factory.printing.footer = "想设置页脚么,这里哦";
  factory.printing.portrait=true; //纵 factory.printing.portrait = false; 横
  factory.printing.topMargin="6";//存在最小默认值5.02
  factory.printing.bottomMargin="6";//存在最小默认值4.13
  factory.printing.leftMargin="2";//存在最小默认值5.08
  factory.printing.rightMargin="2";//存在最小默认值6.79。。。本人机子上测出来是这样的,不知道普遍是否如此。
免费版就只能设定这些咚咚了吧
  // 直接打印
  factory.DoPrint(false);//true时弹出打印对话框
  //返回到原来的打印设置
  factory.printing.header = h;
  factory.printing.footer = f;
  factory.printing.topMargin=t;
  factory.printing.bottomMargin=b;
  factory.printing.leftMargin=l;
  factory.printing.rightMargin=r;
  //显示打印按钮
  document.all("printbtn").style.visibility = 'visible';//通过document.all("printbtn").来指定页面中的任何类,并给以进一步属性设置
}
//--></script>
 </HEAD>
 <body>
  <OBJECT id="factory" style="DISPLAY: none" codeBase="ScriptX.cab#Version=5,0,4,185" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
   viewastext>
  </OBJECT>
  <div id="printbtn"><input name="idPrint" type="button" value="打印" οnclick="doprint()"></div>

codeBase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360" 这里需要给出ActiveX ScriptX.cab的地址,你可以下载到自己的网站中并提供出来,也可以引用其他网站的。当用户访问该网页时,将自动判断该浏览器是否已装有,没有的话,弹出下载警告。同意下载之后,就可以了。

注意不要把<div id="printbtn"><input name="idPrint" type="button" value="打印" οnclick="doprint()"></div>放在runat server的form中哦。。。不要再犯像我一样的错误了哦。

当将打印属性设置函数放在body onload中时,导入该页面时,设置。退出后自动恢复原有设置。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
IE下页面打印控件 类似于ScriptX控件,但本控件可免费使用 控件使用OCX技术,使控件加载到IE浏览器中 首次使用需要用户加载Activex控件,以后将自动加载运行 控件功能: 1.屏蔽IE打印时出现的打印设置框。 2.自动设置打印控制参数。 3.实现自动打印。 使用方法 控件的ID为clsid:AE1A309B-6FFA-4FCF-B07F-CB97FFD56B1B 使用Object标签包裹即可。 如 <OBJECT ID="TestAX" classid="clsid:AE1A309B-6FFA-4FCF-B07F-CB97FFD56B1B" codebase="IEprint.ocx#version=" width=0 height=0 align=center hspace=0 vspace=0 ></OBJECT> 使用Javascript或VBScript程序进行调用 使用使,先得到打印控件Object对象实例如 a=document.getElementById("TestAX"); 参数内容 接着对a进行操作即可 a.Mar_left=0.0075; //左边界 a.Mar_Top=0.0075; //上边界 a.Mar_Right=0.0075; //右边界 a.Mar_Bottom=0.0075; //下边界 a.Orientation="纵向";//打印方向 a.Paper_Size="Folio"; //纸张大小 a.Header_Html="Headeraaaaaaaa"; //头部标注 a.Footer_Html="Footerssssssss"; //尾部标注 a.ApplySetup(); //应用上面的设置 函数方法 a.PrintWithOutSetup(); //无需设置打印内容 a.PrintWithOutSetupPrintWithOutByID("cnnb"); //打印除ID为cnnb的其他内容。即过滤id为cnnb的所有内容 a.PrintWithOutSetupPrintByID("163");//打印id为163的内容。即过滤id为163以外的所有内容 a.PrintWithSetup(); //有设置选项的打印 a.PrintPreView();//打印预览 对本控件有建议的可以联系我,一般隐身存在。。。 chatop QQ948905

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值