首页 技术 正文
技术 2022年11月15日
0 收藏 469 点赞 4,537 浏览 1979 个字

原文:利用WebBrowser实现Web打印的分析

WebBrowser是IE内置的浏览器控件,无需用户下载。本文档所讨论的是有关IE6.0版本的WebBrowser控件技术内容。其他版本的IE应该也支持。与其相关的技术要求有:打印文档的生成、页面设置、打印操作的实现等几个环节。本文以asp为例,但是他可以容易的移植到其他web技术中。
  一、WebBrowser控件
  <object ID=’WebBrowser’ WIDTH=0 HEIGHT=0 CLASSID=’CLSID:8856F961-340A-11D0-A96B-00C04FD705A2′></object>

  二、WebBrowder控件的方法
//打印

WebBrowser1.ExecWB(6,1);

//打印设置

WebBrowser1.ExecWB(8,1);

//打印预览

WebBrowser1.ExecWB(7,1);

  三、实现打印的设置,打印数据的生成,打印的预览,和打印。
  实现打印的设置,打印数据的生成,打印的预览,和打印我一般这样做,假如查询结果在a.asp中,那么在a.asp中放置打印设置、打印预览、打印三个按钮。
  单击打印设置按钮则在js中执行WebBrowser1.ExecWB(8,1),以打开打印设置窗口。
  单击打印预览按钮则打开一个b.asp,在b.asp中重新生成打印数据,然后在b.asp中自动执行WebBrowser1.ExecWB(7,1),以打开用户预览界面。
  单击打印按钮则也打开b.asp,在b.asp中重新生成打印数据,然后在b.asp中自动执行WebBrowser1.ExecWB(6,1),以自动打印数据。
  四、代码
  a.asp调用数据的程序就不给出了。只给出几个按钮的代码:
  <input type=“button“ name=“mPrint“ value=“打印“ onclick=“exePrint();“>
<input type=“button“ name=“mPreview“ value=“打印预览“ onclick=“exePreview();“>
<input type=“button“ name=“mSetting“ value=“打印设置“ onclick=“exeSetting();“>

<object ID=’WebBrowser’ WIDTH=0 HEIGHT=0 CLASSID=’CLSID:8856F961-340A-11D0-A96B-00C04FD705A2′></object>
<script language=’javascript’>

function exePrint()
{

liu= window.open(‘b.asp?do=1′,’_blank’,’left=2000,top=2000,fullscreen=3′);
}
function exePreview()
{
window.open(‘b.asp?do=2′,’_blank’,’left=2000,top=2000,fullscreen=3′);
}

function exeSetting()
{
WebBrowser.ExecWB(8,1);
}
</script>
代码中打印设置的代码很简单,大家很容易理解。打印预览和打印的按钮需要告诉b.asp我们将要执行的是打印还是打印预览。另外,还要将查询字符串传递过去。当然web高手可以尝试其他方法,以避免反复重服务器调数据,当然初学者只能通过多次查询,以牺牲性能来解决打印了。
假设本例中a.asp通过传递一个查询串打开了b.asp,则在b.asp中将重新载入数据。在这里载入数据后将数据显示在网页上需要知道每个页要显示多少条(PageSize)。显示的时候每显示PageSize条后,就要显示一个<p style=’page-break-before:always;’> 这个语句相当于分页符,也就是当打印或者预览时遇到了这个分页符后会强制分页。一般我们可以这样:
<table>
???
</table>
<p style=’page-break-before:always;’>
<table>
???
</table>
<p style=’page-break-before:always;’>

……

<table>
???
</table>
<p style=’page-break-before:always;’>

显示完数据后根据用户的的指令(判断参数do的值),来分别执行预览或者打印。
如果是预览则执行下面代码:
WebBrowser.ExecWB(7,1);
window.opener=null;
window.close();
如果是打印则执行:
WebBrowser.ExecWB(6,1);
window.opener=null;
window.close();

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,910
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,435
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,250
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,061
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,693
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,731