11.1 Web打印
Web打印是一种常用的打印方式,其使用方法简单、方便、快捷,在浏览网页的同时就可以实现打印的功能。
实例291 调用IE自身的打印功能实现打印
实例说明
通过JavaScript调用IE自身的打印功能实现打印,这种方法比较简单,也是常用的打印方式。使用该方法只须将要打印的页面设计好,再通过JavaScript的window对象的print( ) 方法调用IE的打印功能即可。运行本实例,单击“打印”超级链接,会弹出打印对话框,如图11.1所示,然后进行相应的设置,并进行打印。
图11.1 调用IE自身的打印功能实现打印
技术要点
本实例主要通过调用window对象的打印方法print()来实现打印功能。
window对象的print()方法的语法格式如下:
window.print();
例如:
<a href="#" onClick="window.print()">打印</a>
实现过程
(1)设计要打印的页面。
(2)调用window对象的打印方法实现打印功能,代码如下:
<a href="#" onClick="window.print()">打印</a>
举一反三
根据本实例,读者可以:
开发打印库存统计报表;
打印校友录中的同学联系方式。
实例292 打印指定框架中的内容
实例说明
在实例292中已经介绍如何通过 JavaScript调用IE自身的打印功能实现打印,但是该方法将打印页面中的全部内容,包括“打印”超级链接,有时这是不需要的,本实例将介绍如何通过打印指定框架中的内容实现页面部分内容打印。运行本实例,如图11.2所示,单击“打印”超级链接,会弹出打印对话框,进行相应的设置后,单击“打印” 按钮即可对图11.2中的表格内容进行打印。
图11.2 打印指定框架中的内容
技术要点
在实现打印指定框架中内容时,首先需要让要打印的框架获得焦点,然后再调用window对象的print()方法实现打印。
语法:
parent.mainFrame.fcous();
window.print();
参数说明
l mainFrame:表示框架的名称。
实现过程
(1)设计content.htm页面,将要打印的内容放置在该页面中。
(2)设计index.htm页面,在该页面的适当位置添加浮动框架(应用<iframe>标记创建),并将该浮动框架的src属性指定为步骤(1)中创建的content.htm文件,代码如下:
<iframe name="contentFrame" src="/content.htm" frameborder="0" width="100%" height="100%"></iframe>
(3)在index.htm页面中添加“打印”超级链接,打印指定浮动框架中的内容,代码如下:
<a href="#" onClick="parent.contentFrame.focus();window.print();">打印</a>
举一反三
根据本实例,读者可以:
开发打印库存盘点报表;
实现在办公自动化系统中加入打印考勤明细表功能。
实例293 利用WebBrowser打印
实例说明
WebBrowser是IE内置的浏览器控件,无须用户下载。它的优点是客户端独立完成打印目标文档的生成,减轻服务器负荷;缺点是源文档的分析操作复杂,并且要对源文档中要打印的内容进行约束。运行本实例,单击“打印预览”超级链接,即可打开“打印预览”对话框,如图11.3所示,单击“打印”超级链接,即可打开打印对话框进行打印。
图11.3 利用WebBrowser打印
技术要点
本实例主要应用IE内置的WebBrowser控件实现,该控件的具体参数如下。
l document.all.WebBrowser.Execwb(7,1):表示打印预览。
l document.all.WebBrowser.Execwb(6,1):表示打印。
l document.all.WebBrowser.Execwb(6,6):表示直接打印。
l document.all.WebBrowser.Execwb(8,1):表示页面设置。
实现过程
(1)建立HTML的Object标签,调用WebBrowser控件,代码如下:
<object id="WebBrowser" classid="ClSID:8856F961-340A-11D0-A96B-00C04Fd705A2" width="0" height="0">
</object>
(2)建立相关的打印超级链接,并调用WebBrowser控件的相应参数实现打印预览、打印等功能。代码如下:
<a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a> <a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a> <a href="#" onClick="document.all.WebBrowser.Execwb(6,6)">直接打印</a> <a href="#" onClick="document.all.WebBrowser.Execwb(8,1)">页面设置</a>
举一反三
根据本实例,读者可以:
实现在网站中打印各种报表功能;
实现在网站中打印单据功能。
实例294 设置页眉页脚
实例说明
在系统默认的情况下,无论是利用IE自身的打印功能进行打印,还是利用IE自带的WebBrowser控件进行打印,在打印的文档顶部和底部会包括页眉和页脚,有时并不需要打印默认的页眉和页脚。本实例将介绍如何清空页眉页脚和恢复页眉页脚。运行本实例,单击“清空页眉页脚”超级链接,即可清空IE默认的页眉页脚,这时再单击“打印预览”超级链接,在打开的“打印预览”窗口中将不显示IE默认的页眉页脚,如图11.4所示,单击“恢复页眉页脚”超级链接即可恢复页眉页脚的显示。
图11.4 设置页眉页脚
技术要点
本实例主要通过WshShell 对象的相关方法实现。WshShell对象是WSH(WSH是Windows Scripting Host的缩写,内嵌于Windows操作系统中的脚本语言工作环境)的内建对象,主要负责程序的本地运行、处理注册表、创建快捷方式、获取系统文件夹信息及处理环境变量等工作。 WshShell 对象的相关方法如表11.1所示。
表11.1 WshShell对象的相关方法
方 法 | 说 明 |
CreateShortcut | 创建并返回WshShortcut对象 |
ExpandEnvironmentStrings | 扩展PROCESS环境变量并返回结果字符串 |
Popup | 显示包含指定消息的消息窗口 |
RegDelete | 从注册表中删除指定的键或值 |
RegRead | 从注册表中返回指定的键或值 |
RegWrite | 在注册表中设置指定的键或值 |
Run | 创建新的进程,该进程用指定的窗口样式执行指定的命令 |
本实例中主要应用了 RegWrite方法,下面将对该方法进行详细介绍。
RegWrite方法用于在注册表中设置指定的键或值,其语法格式如下:
WshShell.RegWrite strName, anyValue, [strType]
参数说明
l strName:用于指定注册表的键或值,若strName以一个反斜杠 (在JavaScript中为//) 结束,则该方法设置键,否则设置值。strName 参数必须以根键名“HKEY_CURRENT_USER”、 “HKEY_LOCAL_MACHINE”、“HKEY_CLASSES_ROOT”、“HKEY_USERS”或 “HKEY_CURRENT_CONFIG”开头。
l AnyValue:用于指定注册表的键或值的值。当strType为REG_SZ或REG_EXPAND_SZ时,RegWrite方法自动将 anyValue转换为字符串。若strType为REG_DWORD,则anyValue被转换为整数。若strType为REG_BINARY,则 anyValue必须是一个整数。
l StrType:用于指定注册表的键或值的数据类型。RegWrite方法支持的数据类型为REG_SZ、REG_EXPAND_SZ、 REG_DWORD和REG_BINARY。其他的数据类型被作为strType传递,RegWrite 返回 E_INVALIDARG。
实现过程
(1)编写自定义JavaScript函数PageSetup_del()和PageSetup_set(),用于实现清空页眉页脚和恢复页眉页脚的功能。具体代码如下:
<script language="JavaScript">
var HKEY_RootPath="HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//PageSetup//";
function PageSetup_del(){ //清空页眉页脚
try{
var WSc=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"");
HKEY_Key="footer";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"");
}catch(e){}
}
function PageSetup_set(){ //恢复页眉页脚
try{
var WSc=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"&w&b页码,&p/&P");
HKEY_Key="footer";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"&u&b&d");
}catch(e){}
}
</script>
(2)建立HTML的Object标签,调用WebBrowser控件,代码如下:
<object id="WebBrowser" classid="ClSID:8856F961-340A-11D0-A96B-00C04Fd705A2" width="0" height="0">
</object>
(3)创建“清空页眉页脚”和“恢复页眉页脚”的超级链接,并调用自定义函数PageSetup_del()和PageSetup_set()实现相应功能。代码如下:
<a href="#" onClick="PageSetup_del()">清空页眉页脚</a>
<a href="#" onClick="PageSetup_set()"> 恢复页眉页脚 </a>
(4)建立相关的打印超级链接,并调用WebBrowser控件的相应参数实现打印预览、打印等功能。代码如下:
<a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(6,6)">直接打印</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(8,1)">页面设置</a>
举一反三
根据本实例,读者可以:
实现在任何打印页面中添加设置页眉页脚功能;
实现自定义页眉页脚的内容功能。