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" 之后的文本按右对齐方式打印。

大概能满足大部分的基本要求吧,我也是个了解的很浅,还请大家多多指教!

原文地址:https://www.cnblogs.com/liming-java/p/9273522.html

时间: 2024-11-09 01:55:31

web 打印功能的相关文章

web打印功能

1.http://www.jb51.net/article/38083.htm 2. <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title>    </head><body>    <form id="form1" runat="server&quo

WEB打印功能相关

最近项目要实现WEB打印功能,各种调试. 首先要实现WEB打印,这块用的window下的print方法,下面的代码实现了WEB打印和去页眉页脚的功能,打印分页需要在想要分页的元素上设置style="page-break-after:always",我这里是在table元素上加的分页,其他元素没测 1 //打印代码 2 function Print() 3 { 4 var printStr = "<html> 5 <head> 6 <meta ht

lodop 控件实现web打印功能

WEB套打可选方案不多,理想的更少,利用免费控件Lodop+JavaScript实现精确套打,算是较为经典的选择.这种方案其实比较简单,利用一个htm文件就可以实现模板设计过程,几乎是"空手套"式的开发,但理解这几个步骤还是需要点时间,下面一步步详细演示说明: 第一步:建立一个空白的模板设计文件 把以下超文本代码复制到一个本地htm文件中: 本文模拟EMS特快专递单的程序开发,文件起名为printEMS.htm,权且称它为模板设计文件. 第二步:用浏览器打开该文件 在本地文件夹中双击该

对于四方web打印控件的看法

web打印控件比较多,但是基本都收费.但是四方的虽然不收费,就是得动动手了. 要谈到控件的实用性,便捷性,当然四方的会更胜一筹.在它的demo例子中,像设置默认打印机,纸张自定义大小,页眉页脚,页边距,连续打印等功能都可以轻松的实现. 对于那些需要web打印功能,但囊中羞涩,或者小范围使用,盈利未知的创业项目是比较实用的.如果要正真能够顺畅的使用,随心所欲,付费也是投资成本不可避免的了. 四方web打印控件,使用于IE作为客户端的所有应用,与服务器端开发语言无关,即PAZU支持所有的开发语言开发

打印方案之web打印

前言: 前一段时间在工作中,遇到需要通过打印实现对报表或者工作流清单等事情时,都需要运用到打印功能,那么 ,这个时候你会怎么处理? 在这里,我们可以通过最简单的方式实现web打印功能,简单易懂,方便快捷 1.在处理工作流项目中,需求中:   2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE:       4.没有依赖也没有配置,使用简单 申请表为例: 实现方法: <script src="js/jquery.min.js"></s

JS达到Web指定保存的和打印功能的内容

背景 首先,说说文章的背景.近期手中的一个项目,因为需求中要求提供Web界面的打印功能.当然假设没有打印机,还能够提供保存到本地.项目组长把这个"小任务"分给了我.本着努力为组长分忧解难的思想,领了任务之后,就立即開始了工作. 问题 刚開始的时候.组长给了一个工具(jatoolsprinter)让我研究.我用了一个多小时的时间,做出了一个简单的Demo,然后就是各种的測试,因为 web 打印须要浏览器安装 ActiveX 组件.在随后的測试中,我用了几款浏览器.甚至把安全级别都调到了最

Web打印组件jatoolsPrinter(转载)

应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于web的应用,客户端的规则很简单,容易学习,容易维护,容易发布.但对程序员来说,因为浏览器的局限性,却要面对很多挑战.怎么样来进行基于web的套打,就是这么一个令多数程序员头痛不已的问题. 基于web的套打,难度在于要将浏览器中呈现的html,精确地打印到票据中,而且能够实现对分页位置的控制.下面就ie浏览器所能采用的套打解决方案,来个汇总分析,希望对大家有所帮助. jatoolsPrinter 是一款实现网页套打的免费

Lucidpress | Free Design Tool(Web打印)

插件介绍: 在工作中常常会用到打印,如果是简单的Word上的数据还简单,Web打印的确是个很麻烦的问题,有了Lucidpress | Free Design Tool(Web打印)就可以解决你的烦恼,现在,任何人都可以创建令人惊叹的视觉内容的打印,移动或网络.宣传册的制作.时事通讯.杂志.报告.或更多. 打印:下载你的内容作为一个高品质的PDF或JPG的完美打印. 数字:出版你的作品作为一个PNG或圆滑的数字文档.所有的一切都是为了在电脑.平板电脑或智能手机上进行优化. 使用说明: 将Lucid

Web打印的处理 方案之普通报表打印

做过许多 的Web项目,大多数在打印页面内容的时刻 ,采用的都是议决 Javascript调用系统内置的打印要领 执行 打印,也就是调用 PrintControl.ExecWB(?,?)实现直接打印和打印预览功能.打印的成效 及控制性虽然不是很好,但是也可以 勉强运用 ,应付通常 的打印仍旧 能够 的了. 代码如下所示: //调用PrintControl.ExecWB(?,?)实现直接打印和打印预览功能.(直接用系统提供的print()要领 打印不能 潜藏 某些区域) //preview:能不能