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>
除了以上鍵值以外還有
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打印两法 (精)(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Diary][pic]毕业聚餐-笑容灿
- 下一篇: 殇-至吾爱 ---经典