JavaScript实现网页打印,可设置页眉、页脚、页边距

2023-10-27

WebBrowser是IE内置的浏览器控件,无需用户下载,即可实现客户端页面打印。 

关于这个组件还有其他的用法,列举如下:

WebBrowser.ExecWB(1,1) 打开 
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 
Web.ExecWB(4,1) 保存网页 
Web.ExecWB(6,1) 打印 
Web.ExecWB(7,1) 打印预览 
Web.ExecWB(8,1) 打印页面设置 
Web.ExecWB(10,1) 查看页面属性 
Web.ExecWB(15,1) 好像是撤销,有待确认 
Web.ExecWB(17,1) 全选 
Web.ExecWB(22,1) 刷新 
Web.ExecWB(45,1) 关闭窗体无提示 

注意有可能执行时,会出现没有效果的错误,这时原因是可能你的浏览器限制了active对象的创建,只要取消限制就好了,取消方法如下: 

打开你的ie浏览器internet选项—— 安全—— 自定义级别—— 把对没有标记为安全的activex控件进行初始化和脚本运行 设置为启用。 


<SCRIPT language=javascript>
var HKEY_Root,HKEY_Path,HKEY_Key; 
HKEY_Root="HKEY_CURRENT_USER"; 
HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; 
var head,foot,top,bottom,left,right;

//取得页面打印设置的原参数数据
function PageSetup_temp() {
	try 
 { 
  var Wsh=new ActiveXObject("WScript.Shell"); 
  HKEY_Key="header"; 
//取得页眉默认值
  head = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key); 
  HKEY_Key="footer"; 
//取得页脚默认值
  foot = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key); 
  HKEY_Key="margin_bottom"; 
//取得下页边距
  bottom = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key); 
  HKEY_Key="margin_left"; 
//取得左页边距
  left = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key); 
  HKEY_Key="margin_right"; 
//取得右页边距
  right = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key); 
  HKEY_Key="margin_top"; 
//取得上页边距
  top = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key); 
 } 
 catch(e){
    alert("不允许ActiveX控件");
 } 
}

//设置网页打印的页眉页脚和页边距
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,""); 
  HKEY_Key="margin_bottom"; 
//设置下页边距(0)
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); 
  HKEY_Key="margin_left"; 
//设置左页边距(0)
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); 
  HKEY_Key="margin_right"; 
//设置右页边距(0)
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); 
  HKEY_Key="margin_top"; 
//设置上页边距(8)
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"8"); 
 } 
 catch(e){
    alert("不允许ActiveX控件");
 } 
} 
//设置网页打印的页眉页脚和页边距为默认值 
function  PageSetup_Default() 
{   
 try 
 { 
  var Wsh=new ActiveXObject("WScript.Shell"); 
  HKEY_Key="header"; 
  HKEY_Key="header"; 
//还原页眉
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,head); 
  HKEY_Key="footer"; 
//还原页脚
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,foot); 
  HKEY_Key="margin_bottom"; 
//还原下页边距
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,bottom); 
  HKEY_Key="margin_left"; 
//还原左页边距
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,left); 
  HKEY_Key="margin_right"; 
//还原右页边距
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,right); 
  HKEY_Key="margin_top"; 
//还原上页边距
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,top); 
 }
 catch(e){
 	alert("不允许ActiveX控件");
 }
}

function printorder()
{
		PageSetup_temp();//取得默认值
		PageSetup_Null();//设置页面
		factory.execwb(6,6);//打印页面
		PageSetup_Default();//还原页面设置
		//factory.execwb(6,6);
		window.close();
}

</script>
<OBJECT id=factory height=0 width=0 classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2></OBJECT>


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript实现网页打印,可设置页眉、页脚、页边距 的相关文章

  • 在 ajax 完成之前阻止提交

    我正在使用 jQuery 并且我希望在所有 ajax 调用完成之前表单提交不会起作用 我想到的一种方法是存储一个布尔值 该值指示是否有 ajax 请求正在进行 在每一个结束时它都会被设置为 false 我不确定这是否是最好的方法 所以我将不
  • 在 Web 浏览器中查找触发 then 事件的 jQuery 代码

    我加入了一个团队来从事一个项目 现在他们使用 jQuery 并且很多 javascript 文件都是外部文件而不是嵌入的 当我点击一个按钮时 它看起来就像 a class button cancel Cancel a 它触发一个在一个 ja
  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 在 MongoDB 中查找具有字符串 ID 数组的文档

    我有一个 id 字符串数组 我想将其与 find 函数一起使用 db companies find id in arr arr看起来像这样 563a2c60b511b7ff2c61e938 563a2c60b511b7ff2c61e8b7
  • 如何向 jQuery Tokeninput 添加占位符?

    如何将占位符添加到 jQuery Tokeninput 字段 一个正常的placeholder属性在这里不起作用 对于这样的输入
  • 限制文本区域中每行的字符数

    我整个周末都在寻找解决这个难题的方法 但尚未找到一个可以正常工作的解决方案 我想要实现的是限制文本区域中每行的字符数 不是相同地限制它们 而是我选择的每行不同的字符数 例如 我只想在我的文本区域中包含 4 行 第 1 2 和 3 行将限制为
  • Flask wtf.quick_form 运行一些 javascript 并设置表单变量

    我正在创建博客文章 到目前为止已经使用普通的 html 表单完成了 我所做的一个有趣的想法是运行 javascript onclick 并使用页面中的额外数据在表单中设置一个隐藏变量 这很好地传递到服务器并通过 request form 获
  • 未捕获的引用错误:myFunction 未定义[重复]

    这个问题在这里已经有答案了 这到底是怎么回事 http jsfiddle net sVT54 http jsfiddle net sVT54
  • 创建 Cookie 时需要帮助

    我有一个名为yes和另一个名叫no
  • 保存/导出Chrome的JavaScript控制台输入历史记录

    无论如何 我可以保存或导出 JavaScript 控制台的历史记录吗 input 控制台历史记录 在 Google Chrome 中 我不想保存输出或错误 因此将鼠标悬停在控制台框上 右键单击并选择Save as 不是解决方案 我不想每次都
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • 如何滚动到div内的元素?

    我有一个滚动的div我想在点击它时发生一个事件 它会强制执行此操作div滚动以查看内部元素 我写的JavasCript是这样的 document getElementById chr scrollIntoView true 但这会在滚动时滚
  • 是否可以使用打字稿映射类型来创建接口的非函数属性类型?

    所以我正在研究 Typescript 的映射类型 是否可以创建一个接口来包装另一种类型 从而从原始类型中删除函数 例如 interface Person name string age number speak void type Data
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • Jquery,清除/清空 tbody 元素的所有内容?

    我认为这会相当简单 但似乎空方法无法清除我拥有的 tbody 如果有人知道执行此操作的正确方法 我将不胜感激 我只想删除 tbody 中包含的所有内容 到目前为止我正在尝试 tbodyid empty HTML table tbody tr
  • 从多维无穷大数组中删除数组元素

    我想删除一个特定元素 例如 我想删除元素id 76在下面的数组中 而且 数组可以无限地组合在一起 这里的问题是我无法刷新页面 因为我使用 Vue js 进行即时操作 如果我能做到这一点 我的下一个问题可能是如何在我现在想要的地方添加一个元素
  • 如何更改订阅值?使用 rxJS

    我正在创建一个计时器 需要你的帮助 我刚刚学习 Angular 和 rxJS 对此我有一些疑问 我正在创建一个具有启动 停止 暂停 重置功能的计时器 并且 btn Reset 必须将我的计时器 暂停 到 300 毫秒 怎么做 D 我的启动定
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o

随机推荐

  • 论文笔记之DPG

    原论文地址 阅读DPG的必要性 A2C的难收敛使得policy based向着DDPG发展 而DDPG Deep DPG 因此想要理解DDPG算法 就必须先理解DPG Deterministic Policy Gradient Algori
  • 【QT5 带参connect语法记录】

    QT5 带参connect语法记录 slot版 lamda版 Qt4版 未测试 更多细节参考 slot版 void QListWidget itemClicked2 QListWidgetItem QListWidget itemClick
  • 第三章作业

    例3 1 在一个班级中随机抽取9名学生 得到每名学生的英语考试分数如下 91 69 75 78 81 96 92 88 86 计算9名学生的平均考试分数 解 根据式3 1有 x 91 69 75 78 81 96 92 88 86 9 84
  • 动态生成多个 React createRef

    有这么个需求 从接口获取数据 数据格式为 dataList 接口获取的数据 tableData 表格数据 const dataList tableData1 tableData2 tableData3 需要实现的效果大概长这样 dataLi
  • 【学习SLAM】Bundle Adjustment 光束法平差详解

    首先引述来自维基百科的定义 假设我们有一个3D空间中的点 他被位于不同位置的多个摄像机看到 那么所谓的光束法平差 Bundle Adjustment 就是能够从这些多视角信息中提取出3D点的坐标以及各个摄像机的相对位置和光学信息的过程 可能
  • C++ future async promise 用法详解 - shared_future

    shared future 文章目录 shared future 获得方式 作用 区别 原理 基本函数 基本用法 获得方式 只能由 future 得到 作用 同 future 区别 可以多线程 多次访问 shared state 原理 sh
  • C++分糖果

    题目背景 TDOG为大家准备了很多糖果作为节日礼物 由小T负责发放 题目描述 但是糖果被分开装在 nn 个袋子中 每个袋子里的糖果数量不一定相同 糖果一共要分发给 kk 个小伙伴 为了公平起见 发放给每个小伙伴的糖果数量要一致 小T想给小伙
  • 什么是LAMP?LAMP有什么优势?

    什么是LAMP LAMP 是指Linux 操作系统 Apache HTTP 服务器 MySQL 数据库 和 PHP 网络编程语言 一般用来建立 web 应用平台 和 Java J2EE 架构相比 LAMP 具有 Web 资源丰富 轻量 快速
  • 用Python完成毫秒级抢单,助你秒杀淘宝大单

    目录 引言 环境 需求分析 前期准备 淘宝购物流程回顾 秒杀的实现 代码梳理 总结 0 引言 年中购物618大狂欢开始了 各大电商又开始了大力度的折扣促销 我们的小胖又给大家谋了一波福利 淘宝APP直接搜索 小胖发福利 每天领取三次粉丝专属
  • Golang去除字符串前后空格

    v EthName strings Trim v EthName 两种方法都可以 v EthName strings TrimSpace v EthName
  • Python报错: python setup.py egg_info" failed with error code 1

    Python报错 Command python setup py egg info failed with error code 1 in private var folders 0m 7s1flm9j03d35pkr92jcsv3w000
  • 【PyTorch】torch.Tensor详解和常用操作

    学习教材 动手学深度学习 PYTORCH 版 DEMO https github com ShusenTang Dive into DL PyTorch PDF 制作by Marcus Yang https github com cheny
  • 排名第25位!众享比特连续两年上榜“北京民营企业中小百强”

    2022年9月26日 2022北京民营企业百强发布会成功召开 北京市工商业联合会发布了2022北京民营企业百强 1 4 榜单 北京众享比特科技有限公司连续两年荣登 北京民营企业中小百强榜单 排名前进57位 位列第25位 2022年 全市共有
  • 【AutoHotkey】 解析并执行 字符串中的 函数表达式

    预期效果 str func1 123 456 ExecFunc str 实现方式 正则文本解析出函数名及其参数 array形式 执行 该函数与其参数 难点
  • linux fseek函数用法详解

    1 功 能 重定位流 数据流 文件 上的 文件内部位置 指针 注意 不是 定位文件指针 文件指针指向文件 流 位置 指针指向文件内部的字节位置 随着文件的读取会移动 文件指针如果不重新赋值将不会改变指向别的文件 2 用 法 int fsee
  • JS算法之动态规划

    如果不能避免被剥削的命运 就要提高自己被剥削的价值 大家好 我是柒八九 今天 我们继续探索JS算法相关的知识点 我们来谈谈关于动态规划的相关知识点和具体的算法 如果 想了解其他数据结构的算法介绍 可以参考我们已经发布的文章 如下是算法系列的
  • MFC CPropertySheet控件

    步骤一 新建一个对话框 步骤二 新建三个属性页对话框资源 IDD PROPPAGE LARGE 并对新建的三个属性页对话框生成三个类 基类为CPropertyPage 步骤三 插入一个新的类 用于创建属性表单 基类为CPropertyShe
  • Twitter的like动画安卓版 - 备选方案

    英文 Twitter s like animation in Android alternative 相关动画网址 http frogermcs github io twitters like animation in android al
  • VCRUNTIME140_1.dll丢失是怎么回事?三个解决方法分享

    最近打开软件或者游戏的时出现了以下问题一开始以为是自己手残又误删了什么 重新安装了两次也没有解决 看网上有许多朋友安装其他软件时会出现缺少VCRUNTIME140 dll 其实VCRUNTIME140 1 dll是微软Visual C Re
  • JavaScript实现网页打印,可设置页眉、页脚、页边距

    WebBrowser是IE内置的浏览器控件 无需用户下载 即可实现客户端页面打印 关于这个组件还有其他的用法 列举如下 WebBrowser ExecWB 1 1 打开 Web ExecWB 2 1 关闭现在所有的IE窗口 并打开一个新窗口