使用ScriptX控件实现IE浏览器分页打印功能

  之前讲过js调用ie浏览器自带打印的用法,今天讲使用插件的方式。浏览器自带打印不能控制页边距、页眉页脚等选项,尤其是如果分页打印的话,无法自动将前一页标题带到本页,所以不适用多页打印的功能。使用ScriptX控件可以完美解决分页打印的问题,虽然这个插件是收费的,但是免费的开放的功能已经足够用了。

  首先下载这个插件,双击执行这个文件,然后一路next,安装完成。

  在文档中添加如下代码。

1 <OBJECT classid="CLSID:1663ED61-23EB-11D2-B92F-008048FDD814" height="0" id="wb" name="wb" width="0"></OBJECT>

  简单说一下这个<object>标签,这个标签的功能是嵌入插件,可以是java类,可以是注册表安装的软件,理论来说<object>标签可以内嵌:图像、音频、视频、Flash、ActiveX等一些插件,以上方式就是插入一个ActiveX插件,classid就是这个ActiveX在注册表的ID,可以打开注册表,搜索这个ID值会发现如下所示:

  没错,就是我们刚刚安装过的ScriptX控件。以下为打印主要js代码,分为 "打印预览" 、"打印" 两个功能。打印区域样式的问题,请参考js调用浏览器“打印”与“打印预览

  

 1      // 打印预览
 2         function printpreview() {
 3             var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
 4             if (userAgent.indexOf("Chrome") > -1 || userAgent.indexOf("Opera") > -1) {
 5                 window.print();
 6             } else {
 7                 try {
 8                     var srcBody = window.document.body.innerHTML;
 9                     PrintBase();
10                     wb.printing.Preview();
11                     window.document.body.innerHTML = srcBody;
12                     window.location.reload();
13                 } catch (e) {
14                     alert("请安装打印插件");
15                 }
16             }
17         }
18         // 打印
19         function printhtml() {
20             try {
21                 var srcBody = window.document.body.innerHTML;
22                 PrintBase();
23                 window.print();
24                 window.document.body.innerHTML = srcBody;
25                 window.location.reload();
26             } catch (e) {
27                 alert("请安装打印插件");
28             }
29         }

  以上代码在预览或打印时有保存HTML的操作,是因为预览或打印可能会修改页面的样式,但是我们做了这些操作后不应该改变页面的原始样式,所以要进行恢复。

  设置页眉页脚等打印格式的js方法:PrintBase()

 1 // 设置打印参数
 2 function PrintBase(sign) {
 3     var header = "";
 4     var footer = "";
 5     sign = false;
 6     header = $("#fromname").val() + "   表单编号:" + $("#formno").text() + "&b申请日期:" + $("#createtime").text();
 7     footer = "&b共&P页/第&p页";
 8
 9     wb.printing.header = header;   //页眉
10     wb.printing.footer = footer;   //页脚  默认&u&b&d &w-网址
11     wb.printing.portrait = sign;   //true为纵向打印,false为横向打印
12     wb.printing.leftMargin = 4;
13     wb.printing.topMargin = 8;
14     wb.printing.rightMargin = 4;
15     wb.printing.bottomMargin = 8;
16 }

  以上就是利用ScriptX插件进行分页打印的主要功能讲解,欢迎留言指正或咨询。

原文地址:https://www.cnblogs.com/chenboaixuexi/p/11954206.html

时间: 2024-10-07 15:34:13

使用ScriptX控件实现IE浏览器分页打印功能的相关文章

使用ScriptX控件进行横向打印

一个需求需要采用横向打印,目前采用IE自身的打印功能(WebBrowser.ExecWB控件)很难进行横向设置,默认需要调用document.all.WebBrowser.ExecWB(8,1);打开打印设置对话框进行人工设置,颇为不方便,本次采用ActiveX控件,也即第三方的ScriptX控件进行横向设置. ScriptX基本功能免费,但高级功能是收费的,下面我就把最近在项目中使用ScriptX的经验总结一下. 1. 首先把ScriptX.cab放在一个目录下面,比如根目录 2. 目前htm

Asp.Net数据控件引用AspNetPager.dll分页

今天与大家分享一下"Asp.Net数据控件引用AspNetPager.dll分页"首先声明以下几点: 1.也许讲解有点初级,希望高手不要"喷"我,因为我知道并不是每一个人都是高手,我也怕高手们说我装13,小生不才: 2.如有什么不对的地方,还希望大家指出,一定虚心学习: 3.本文属于作者原创,尊重他人劳动成果,转载请注明作者,谢谢. 下面开讲: 第一步:首先是下载一个AspNetPager.dll 下载地址 http://files.cnblogs.com/tand

Repeater控件使用(含删除,分页功能)

Repeater控件使用(含删除,分页功能) 摘自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html 前臺代碼 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Repeater.aspx.cs" Inherits="Repeater" %> <!DOCTYPE html P

ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)

下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整的学习完所需知识,,其他文件夹的内容如其名说描述一样 没张图片都有文字说明,可以需要该功能的时候搜索一下然后打开图片就可以学习到 网盘下载地址:需要的话给留言我再传上去 http://www.cnblogs.com/langtianya原创 ios学习笔记图片+图片解释(c语言 oc语言 ios控件

PagedDataSource数据绑定控件和AspNetPager分页控件结合使用列表分页

1.引用AspNetPager.dll. 2.放置Repeater数据绑定控件. <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> //绑定显示的列表代码 </ItemTemplate> </asp:Repeater> 3.在页面添加AspNetPager分页控件,会出现以下代码. <%@ Register Assembly="Asp

[iOS基础控件 - 5.4] 广告分页代码(UIScrollView制作)

A.概念 例子就是桌面的APP列表,当APP数量超过一个屏幕,自动进行分页 B.实现思路 1.创建一个UIScrollView,这里设置为宽度跟屏幕相同,高度1/4屏幕高度左右 2.使用代码在UIScrollView中添加ImageView,横向放入多张ImageView 3.设置UIScrollView的contentSize为所有图片的宽度总和 4.要保证UIScrollView的宽度等于一张ImageView的宽度,才能正确分页 C.相关属性 设置属性pageEnable = YES,UI

iOS基础控件之 图片浏览器

知识准备: UIbutton 和UIimageview的异同: 相同点:> 都能显示图片 不同点:> UIButton默认情况就能监听点击事件,而UIImageView默认情况下不能   > UIButton可以在不同状态下显示不同的图片      > UIButton既能显示文字,又能显示图片 如何选择:> UIButton:需要显示图片,点击图片后需要做一些特定的操作 > UIImageView:仅仅需要显示图片,点击图片后不需要做任何事情 NSArray和NSDi

基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发

一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务数据交互.需插件才能实现的与本地设备的交互等)的情况下可以酌情慎用. 浏览器插件总体可以划分为两大阵营,即IE支持的插件以及非IE支持的插件.本来在Netscape时代,对于浏览器插件是有公用的规范的(NPAPI),一开始所有浏览器都支持该规范,包括IE.后来出于商业原因,微软的IE不再支持NPAPI,改而自己开发了一套基于COM的Ac

Android实战(一)学习了多个控件实现登录及记住密码功能

首先确定一下需要的控件: 两个EditText:用于输入账号和密码 一个button:用于登录查看账号和密码是否正确 一个checkbox:用于记住密码和账户 一个Androidstudio:用于编写代码,当然牛逼的人也推荐使用记事本写代码,废话不多说开工. 创建一个App项目加入两个布局两份Java.class ,在Androidmanifest.xml里面注册第二个布局. 准备完毕 1.在初始布局中加入上述控件,并为其设置好id 代码如下所示 <LinearLayout xmlns:andr