web 打印功能
在项目开发中有时候会碰到要求打印页面中的数据的功能需求。需求原因主要有两点吧,一是需要打印的数据只是页面的一部分即页面的区域打印,比如只需要打印页面中表格里面选中的数据等,二是需要打印出来的样式和页面展示的样式有差别,比如需要将表格中的列竖着打印出来。
我在开发中主要用到的就是window.print()这个js函数,这个函数相当于在页面中右键打印那个功能,但如果直接使用这个函数会将整个页面打印出来。所以我们对页面数据的隐藏或者重写一个页面,得到我们想要打印的数据和样式。
1、隐藏不需要打印的数据
这种方式只能针对打印出来的样式和页面样式没什么差别的
贴代码
<style type="text/css" media="print">
/* 不需要打印的区域*/
.notPreview{
display: none;
}
</style>
然后调用window.print()即可
2、得到需要打印的数据,按照打印的样式,重写一个页面进行打印
先贴代码
bdhtml = window.document.body.innerHTML;
window.document.body.innerHTML = prnhtml;
window.print();
window.document.body.innerHTML = bdhtml;
window.document.location.reload();
在这个里面,bdhtml为原始的页面。prnhtml为真正调用右键打印的页面,需要根据实际情况进行拼接。在页面调用打印之后将页面恢复为原始页面,并reload,防止js函数不能正常使用。
在这之后还会遇到的问题 就是页眉、页脚、边距等这些了,这些实际上都是写在注册表里面的,所以需要修改注册表。
function PageSetup(name,value) {
try{
var HKEY_Path = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
var Wsh = new ActiveXObject("WScript.Shell");
Wsh.RegWrite(HKEY_Path+name,value);
}catch(e){
alert("需要运行ActiveX才能进行打印");
}
}
PageSetup("header",""); // 页眉为空
PageSetup("footer","");//页脚为空
PageSetup("margin_left","0mm");//左边距为0
PageSetup("margin_top","0mm");//上边距为0
name 大致有这些:header(页眉),footer(页脚),margin_bottom(下边距),margin_left(左边距),margin_right(右边距),margin_top(上边距)
value的一些常用的大致有这些: &w 窗口标题 、&u 网页地址 (URL) 、&d 短日期格式(由“控制面板”中的“区域设置”指定)、&D 长日期格式(由“控制面板”中的“区域设置”指定) 、&t 由“控制面板”中的“区域设置”指定的时间格式 、&T 24 小时时间格式 、&p 当前页号 、&P 网页总数 、&& 单个 & 号 (&) 、&b 紧跟在这些字符之后的文本居中打印。 、 &b&b 紧跟在第一个 "&b" 之后的文本居中打印,跟在第二个 "&b" 之后的文本按右对齐方式打印。
大概能满足大部分的基本要求吧,我也是个了解的很浅,还请大家多多指教!
web 打印功能的更多相关文章
- lodop 控件实现web打印功能
WEB套打可选方案不多,理想的更少,利用免费控件Lodop+JavaScript实现精确套打,算是较为经典的选择.这种方案其实比较简单,利用一个htm文件就可以实现模板设计过程,几乎是“空手套”式的开 ...
- 打印方案之web打印
前言: 前一段时间在工作中,遇到需要通过打印实现对报表或者工作流清单等事情时,都需要运用到打印功能,那么 ,这个时候你会怎么处理? 在这里,我们可以通过最简单的方式实现web打印功能,简单易懂,方便快 ...
- web页面实现指定区域打印功能
web页面实现指定区域打印功能 使用CSS,定义一个.noprint的class,将不打印的内容放入这个class内. 详细如下: <style media=print type="t ...
- JS实现Web网页打印功能(IE)
问题描述: JS实现Web网页打印功能 问题解决: 这里主要使用WebBrowser控件的ExeWB在IE中打印功能的实现 WebBrowser介绍: WebBrows ...
- JS达到Web指定保存的和打印功能的内容
背景 首先,说说文章的背景.近期手中的一个项目,因为需求中要求提供Web界面的打印功能.当然假设没有打印机,还能够提供保存到本地.项目组长把这个"小任务"分给了我.本着努力为组长分 ...
- Web打印组件jatoolsPrinter
应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于web的应用,客户端的规则很简单,容易学习,容易维护,容易发布.但对程序员来说,因为浏览器的局限性,却要面对很多挑战.怎么样 ...
- Web打印--Lodop API
Lodop是一款专业的WEB打印控件,其设计目标是简单易用.功能足够强大,开创WEB打印开发的新局面. Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实 ...
- Web打印控件
Lodop是什么? 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程接口,因为她介于浏览器和打印设备之间,是个通道和桥梁,几 ...
- Web打印控件smsx.cab使用说明
在项目开发中,经常会用到页面打印的功能,在ASP.NET环境下推荐一款web打印控件smsx.cab. 使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局 ...
随机推荐
- 2017年11月4日 vs类和结构的区别&哈希表&队列集合&栈集合&函数
类和结构的区别 类: 类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存 类有构造和析构函数 类可以继承和被继承 结构: 结构是值类型在栈上分配(虽然栈的访问速度比 ...
- [转]谷歌Chrome浏览器开发者工具教程—JS调试篇
来源:http://blog.csdn.net/cyyax/article/details/51242720 上一篇我们学习了谷歌Chrome浏览器开发者工具的基础功能,下面介绍的是Chrome开发工 ...
- SpringMVC:系统认识一下maven
网上看了很多springMVC helloworld的教程,非常不满意:首先,maven构建的就很少,再者,绝大部分都是断章取义,让人不明就里.其中有几篇讲的好的,我摘录了一些,自己试着构建了一下项目 ...
- Baseball Game
You're now a baseball game point recorder. Given a list of strings, each string can be one of the 4 ...
- Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作
<div id="divId" class="divTable"> <div class="tableBody"> ...
- iOS instruments之ui automation的简单使用(高手绕道)
最近使用了几次instruments中的automation工具,现记录下automation的简单使用方法,希望对没接触过自动化测试又有需求的人有所帮助. UI 自动测试是iOS 中重要的附加功能 ...
- typeScript入门(四)泛型
泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能. 在像C#和Ja ...
- Windows 线程消息队列和GetMessage实现内幕
注:转自http://blog.csdn.net/FreeWave/article/details/2056469?reload. 清晰地讲解了Windows线程的消息队列和GetM ...
- Golang Gin 项目使用 Swagger
Golang Gin 项目使用 Swagger 标签(空格分隔): Go 首先需要github.com/swaggo/gin-swagger和github.com/swaggo/gin-swagger ...
- day5-基础 函数
函数 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序 ...