ASP.NET設定ie列印兩法

來源:互聯網
上載者:User

在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" onclick="pagesetup_null()"> <input type="button" value="Reset" onclick="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="列印" onclick="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="列印" onclick="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="列印" onclick="doprint()"></div>放在runat server的form中哦。。。不要再犯像我一樣的錯誤了哦。

當將列印屬性設定函數放在body onload中時,匯入該頁面時,設定。退出後自動回復原有設定。

轉自 csdn

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.