这两天进行给网页添加打印、打印预览、页面设置的功能。遇到了以下几个问题

【1】在网上查找了一些打印方法,一开始还可以用,后来不知道动到了哪里,点击vs中拆分或者切换到另一个设计和源代码显示方式,就会引起VS崩溃并且提示VS遇到了问题,需要关闭

让我整了一个下午都没搞定,连1.48G的VS SP1包都重新安装了好长时间。后来回到宿舍又试了试,嘿,你还别说,还真让我找着是哪里出问题了,【我把打印对象给删掉】,切换设计视图时就不会有任何问题,就这一句代码

可是删掉它我就没法打印了

后来我找了一种方法,在js中动态插入该代码就不会有问题

动态插入代码其实还有些问题,这里就不再说了,还是刚才那一句代码,这里只需要将【style="display:none"】给删掉即可

就不会出现VS崩溃的现象了,想要实验的同学们,可以将这一句代码复制到你们的任意一个asp.net网页中,然后切换设计视图显示方式试一下,看VS会不会崩溃

<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" style="display:none"></OBJECT>
<input type="button" value="打印" onclick="WebBrowser1.ExecWB(6, 1);"
style="width: 40px text-align: center" />
<input type="button" value="打印预览" id="btn" onclick="WebBrowser1.ExecWB(7, 1)"
style="width: 60px text-align:center" />
<input type="button" value="页面设置" onclick="WebBrowser1.ExecWB(8, 1);"
style="width: 60px text-align:center" />
<input type="button" value="关闭" onclick="WebBrowser1.ExecWB(45, 1);"
style="width: 40px text-align:center" />

【2】如果网页中出现了打印对象这句代码,当前网页的【无提示关闭】功能就不管用了

出现了这句:

<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>

这句就不管用了:

//退出
protected void Btn_Quit_Click(object sender, EventArgs e)
{
Response.Write("<script>window.opener=null;window.open('','_self');window.close();</script>");
}

只能在网页中用

<input type="button" value="关闭" onclick="WebBrowser1.ExecWB(45, 1);"
style="width: 40px text-align:center" />

来关闭网页了

【3]打印和打印预览时去掉页眉页脚,打印完后或者预览完后恢复页眉页脚需要注意

//必须的变量,如没有,页眉页脚就无法控制
var HKEY_Root, HKEY_Path, HKEY_Key;
HKEY_Root = "HKEY_CURRENT_USER";
HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; //设置网页打印的页眉页脚为空
function PageSetup_Null() {
try {
var Wsh = new ActiveXObject("WScript.Shell");
HKEY_Key = "header";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");
HKEY_Key = "footer";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");
}
catch (e) { }
} //设置网页打印的页眉页脚为默认值
function PageSetup_Default() {
try {
var Wsh = new ActiveXObject("WScript.Shell");
HKEY_Key = "header";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "&w&b页码,&p/&P");
HKEY_Key = "footer";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "&u&b&d");
}
catch (e) { }
}

可以在网页控件的onclick中添加打印之前调用【PageSetup_Null】设置页眉页脚为空,在打印之后调用PageSetup_Default()设置页眉页脚恢复为默认

<input type="button" value="打印" onclick="PageSetup_Null();WebBrowser1.ExecWB(6, 1);PageSetup_Default();" style="width: 40px text-align: center" /> 
<input type="button" value="打印预览" id="btn" onclick="PageSetup_Null();WebBrowser1.ExecWB(7, 1);PageSetup_Default();" style="width: 60px text-align:center" />

.NET网页打印以及使用打印需要注意的事项(可能会引起VS崩溃的现象、打印预览后关闭功能不管用)的更多相关文章

  1. 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”

    问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...

  2. Lodop如何设置预览后导出带背景的图,打印不带背景图

    Lodop中的ADD_PRINT_SETUP_BKIMG,可以加载上背景图,该背景图在预览的时候可以显示也可以不显示,打印可以打印出来也可以不打印出来.一般套打,都是不打印背景图的,比如一些快递的快递 ...

  3. QNDataSet打印预览自动关闭问题

    问题:打印预览后,数据集自动关闭 解决: TQNDataSet = class(TFDMemTable) private protected procedure PSReset; override; ...

  4. JS页面打印,预览,设置,分页

    一)在HTML页中加载打印对象 <object id="WebBrowser" width="0" height="0" classi ...

  5. Lodop打印设计、维护、预览、直接打印简单介绍

    四者的区别和联系:(其中PRINT_DESIGN打印设计是提供给开发人员的,另外三个可开放给用户)PRINT_DESIGN打印设计:辅助开发人员设计,图形化拖动插入修改等,设计完成后,生成代码拷贝到程 ...

  6. Lodop打印设计矩形重合预览线条变粗

    LODOP中的打印设计是辅助进行开发的,实际打印效果应以预览为准,很多效果都是在设计界面显示不出来,或设计和预览界面有差异.例如add_print_text文本的字间距.行间距,旋转,还有允许标点溢出 ...

  7. JS微信网页使用图片预览(放大缩小)

    前言 需求在微信网页中客户点击图片可进行预览放大缩小功能,网上找了各种js方式实现, 唯一的麻烦就是不兼容或者和项目框架不兼容 次函数只只用于部分客户端,否则会出现 WeixinJSBridge is ...

  8. jqprint的网页打印,打印预览可以包含图片

    自己负责的模块需要有个试卷打印的功能,需要将网页特定范围内的内容打印出来,所以选择了jquery.jqprint脚本 用起来也非常简单. //打印    $("#printPage" ...

  9. ie 8在打印网页的时候打印预览是空白的

    win 7专业版系统中的ie 8在打印网页的时候打印预览是空白的,打印出来也是空白的,但是用别的浏览器打印没有问题 根据您的描述,该问题主要是由于保护模式下%Temp%\Low不正常工作引起的. 建议 ...

随机推荐

  1. JSP隐藏过长字段

    <div class="objDiv" title="${fof.fundName }">                        <c ...

  2. ES6(一)ECMAscript6介绍

    nvm-windows Node.js是JavaScript语言的服务器运行环境,对ES6的支持度比浏览器更高.通过Node,可以体验更多ES6的特性.建议使用版本管理工具nvm,来安装Node,因为 ...

  3. 使用scp命令下载服务器文件

    scp -P 7022 admin@ip:/newnow/mysql/backup.sql 7birds.sql -P 指定端口号,默认为22

  4. JAV07接口与继承之动手动脑问题解决

    动手动脑:请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 1.源代码: package Work; class A{ public A(){ System ...

  5. Const关键字

    const const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性.另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程 ...

  6. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  7. 前端面试题2016--CSS

    介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种,IE 盒子模型.W3C 盒子模型:(2)盒模型:内容(content).填充(padding).边界(margin). ...

  8. rtc 关机闹钟1 app层

    private static void enableAlertPowerOn(Context context, final Alarm alarm, final long atTimeInMillis ...

  9. js的规范写法ES5(自己以后按照这样写)

    1.引号的使用,单引号' ' 优先(如果不是引号嵌套,不要使用双引号) 正常情况:console.log('hello there')        双引号转码: $("<div cl ...

  10. idea安装