在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>

除了以上键值以外还有
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.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中哦。。。不要再犯像我一样的错误了哦。

转载于:https://www.cnblogs.com/xinhua/archive/2005/07/11/190502.html

ASP.NET设置ie打印两法 (精)(转)相关推荐

  1. ASP.NET设置ie打印两法[转载]

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

  2. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现

    原文:.NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是 ...

  3. 网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距

    1.控制"纵打". 横打"和"页面的边距 (1) <object  id="factory"  style="display ...

  4. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现与应用(1)

    From: http://blog.csdn.net/flygoldfish/article/details/77208 .NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为, ...

  5. .Net环境下有关打印页面设置、打印机设置、打印预览对话框的实现(开源)---转

    作者:周方勇 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是打印的问题,将业务单据与数据报表打印出来.可想而知,即使一 ...

  6. cad打印样式ctb丢失_CAD制图软件中如何设置CAD打印样式表(CTB)?

    在浩辰CAD制图软件中绘制完成图纸后经常需要将其打印出来,一般情况下是用CAD打印样式表来控制打印输出效果,最主要的是输出颜色和线宽,当然还包括其他一些细节效果.有些CAD制图初学入门者不知道如何设置 ...

  7. WebBrowser 打印设置,打印预览,去页眉和页脚

    WebBrowser是IE内置的浏览器控件,无需用户下载. 一.WebBrowser控件 <object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CL ...

  8. 检测到的ASP.NET设置不适用于集成管理管道模式

    我安装了DotNetOpenAuth SDK-3.4.5.10201.vsix,我无法让它工作. 它在本地工作(当我作为localhost运行时),但当我尝试发布它不起作用. 我得到的IIS错误消息是 ...

  9. (转)检测到在集成的托管管道模式下不适用的ASP.NET 设置

    我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.N ...

最新文章

  1. 线程安全之strtok()函数
  2. 深入浅析mysql引擎
  3. 天问电子少年团DIY作品
  4. python使用localhost链接mysql出错及解决办法
  5. mysql binlog_format 三种格式 详解 ---摘抄
  6. 拦截第三方快递物流 ,console控制台打印正常 ,浏览器显示正常 ,传至后台乱码
  7. shiro框架的学习
  8. 浅谈n个球和m个盒子之间的乱伦关系
  9. Java和Go的GC差异
  10. 图像局部特征(六)--斑点检测之SIFT算法原理总结补充
  11. 网页鼠标点击特效案例收集
  12. 自己电脑配置Oracle WebLogic Server
  13. 同一个项目中让R和Python无缝工作的五种方法
  14. 微服务:服务治理来保证高可用
  15. linux pam认证 用户名,Linux-PAM 认证 模块
  16. Python----凯撒密码、将字符转换成ASCLL函数、将ASCLL码转换成字符函数
  17. artifactIdsolace-spring-boot-starter/artifactId
  18. lower_bound 与 upper_bound
  19. 进出口(海关)新系统的操作流程--20040923
  20. 数字中国城市巡礼之南通,公安的“达摩克利斯之剑”

热门文章

  1. 栈和队列互相实现,一文弄懂它们的关系
  2. 玩转数据结构从入门到进阶一
  3. 如何不能保证每次都请求成功
  4. muduo之mutex和condition
  5. 什么是死锁?死锁产生的四个必要条件?如何避免与预防死锁?
  6. ORACLE 11g 使用ROWNUM完美解决ORA-00600:内部错误代码
  7. python五十五:__getattribute__内置函数
  8. es6 Set的几种使用场景
  9. Hystrix使用Commond的三种方式
  10. smartClient 2--可视化组件